在linux中动态编辑

时间:2013-08-06 07:25:46

标签: grep edit

我对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

2 个答案:

答案 0 :(得分:1)

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

但有些东西需要open(2)系统调用。 (如果不使用open(2)系统调用,则无法读取文件内部内容。

如果要以编程方式编辑某些文件(在shell脚本中),请考虑使用GNU edGNU sedGNU emacsemacs --batch或{{1 }} ....)

也许GNU awk可能有用。

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

答案 1 :(得分:1)

使用sed

sed -i.bak '/find_me/s/$/ including my edits/' filename