2

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

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

修改日期: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 的页面。

4

1 回答 1

2

就像您$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将 替换%为当前文件名,但反斜杠也保留在输出中。我不确定如何克服这一点。

于 2020-02-08T01:29:54.287 回答