0

我对linux相当陌生。我正在寻找的是一种无需打开文件即可编辑文件的方法,而只需编辑 grep 输出即可。

所以如果我这样做

grep find_me allMyfiles

并获得输出

file_1: this is find_me line in file_1
file_2: this is find_me line in file_2

我想编辑某一行而不必打开文件,例如将第一个命中更改为

file_1: this is find_me line in file_1 including my edits

并将此更改保存在 file_1

4

2 回答 2

1

使用sed

sed -i.bak '/find_me/s/$/ including my edits/' filename
于 2013-08-06T07:38:18.610 回答
1

您没有定义“打开文件”对您意味着什么。

但是需要做一些open(2)系统调用。(不使用该open(2)系统调用就无法读取文件内部)。

如果您想以编程方式编辑某些文件(在您的 shell 脚本中),请考虑使用GNU edGNU sedGNU emacs(使用emacs --batchemacs --eval....)

也许GNU awk可能有用。

阅读Advanced Linux ProgrammingAdvanced Bash Scripting应该会有所帮助。

于 2013-08-06T07:31:11.840 回答