搜索 2 个字符串并在匹配行的开头添加 string3

问题描述 投票:0回答:1

我想在文件的每一行中搜索第一个字符串“abc”,如果存在,则在同一匹配行上搜索第二个字符串“xyz”,然后在匹配行的开头添加第三个字符串“//”。

我尝试了下面的命令,但它只打印输出,但不更改现有文件。请在这里帮忙。谢谢。

grep 'abc' myfile | grep 'xyz' | sed 's/^/\/\//'

bash sed grep
1个回答
0
投票

使用这个 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
并跳过扩展名即可。

另见:

© www.soinside.com 2019 - 2024. All rights reserved.