如何使用 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
将 %
替换为当前文件名,但反斜杠也保留在输出中。我不确定如何克服它。
我正在 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
将 %
替换为当前文件名,但反斜杠也保留在输出中。我不确定如何克服它。