如何使用 ed 在命令输出后附加一行

How to append a line with the output of a command using ed

我正在 Linux 中编写一个 bourne shell 脚本,我正在使用 ed 将文本追加到文件末尾。 我必须使用 ed 来完成这项任务。

我需要的附加文本看起来像这样

Modified on: current_date

其中 current_date 是 date 命令的输出

我使用的代码是这样的:

ed -s $arg << END
a
Modified on: !date
.
w $arg
q
END

很明显,这只是将字符串“!date”而不是 date 命令的输出。

实现此目标的最佳方法是什么?

到目前为止,我已经尝试使用命令 '(.,.)s /RE/REPLACEMENT/'、x 和 j 都无济于事,而且我没有看到能够执行的命令在 ed.

的信息页面中执行此操作

就像您在脚本中扩展 $arg 一样,因此您可以扩展运行 date.

的命令替换
ed -s $arg <<END
a
Modified on: $(date)
.
w $arg
q
END

我想推荐类似

的东西
ed -s $arg <<END
r !date +'Modified on \%F'
w $arg
q
END

也一样(用复制默认输出格式的任何格式字符串替换 %F),但我似乎不太正确。反斜杠阻止 ed% 替换为当前文件名,但反斜杠也保留在输出中。我不确定如何克服它。