我对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
中答案 0 :(得分:1)
您没有定义“打开文件”对您意味着什么。
但有些东西需要open(2)系统调用。 (如果不使用open(2)
系统调用,则无法读取文件内部内容。
如果要以编程方式编辑某些文件(在shell脚本中),请考虑使用GNU ed或GNU sed或GNU emacs(emacs --batch
或{{1 }} ....)
也许GNU awk可能有用。
阅读Advanced Linux Programming和Advanced Bash Scripting应该会有所帮助。
答案 1 :(得分:1)
使用sed
:
sed -i.bak '/find_me/s/$/ including my edits/' filename