我想在文件的每一行中搜索第一个字符串“abc”,如果存在,则在同一匹配行上搜索第二个字符串“xyz”,然后在匹配行的开头添加第三个字符串“//”。
我尝试了下面的命令,但它只打印输出,但不更改现有文件。请在这里帮忙。谢谢。
grep 'abc' myfile | grep 'xyz' | sed 's/^/\/\//'
使用这个 Perl 一行代码:
perl -i.bak -lpe 'm{abc} and m{xyz} and $_ = "//$_"; ' in_file
Perl 单行代码使用这些命令行标志:
-e
:告诉 Perl 查找内联代码,而不是在文件中。-p
:一次循环输入一行,默认将其分配给$_
。每次循环迭代后添加 print $_
。-l
:在内联执行代码之前删除输入行分隔符(默认情况下在 *NIX 上为"\n"
),并在打印时附加它。-i.bak
:就地编辑输入文件(覆盖输入文件)。覆盖之前,请在其名称后附加扩展名 .bak
来保存原始文件的备份副本。如果您想跳过写入备份文件,只需使用 -i
并跳过扩展名即可。
另见: