这是我的问题。假设我有一个文件,让我们说a.txt,内容如下:
a aa aaa
b bb bbb
c cc ccc
b bb bbb
d dd ddd
然后我想找到所有的行(逐个)有字符串让我们说" bb"然后复制这一行并替换字符串" bb"用" ee"在新复制/重复的行中。 所以我的最终输出,即文件a.txt的内容,如下:
a aa aaa
b bb bbb
b ee bbb
c cc ccc
b bb bbb
b ee bbb
d dd ddd
有人可以用perl命令帮我吗?还是有比perl更好的选择来实现这个目标吗?
答案 0 :(得分:1)
这是一个非常简单的Perl程序;只需读取行,将它们与您正在搜索的内容进行匹配,并根据需要替换文本。
以perl script.pl < a.txt
:
while (<>) {
print;
if (m/bb/) {
s/bb/ee/g;
print;
}
}
请注意,如果您只想替换整个单词(而不是包含 bb
的内容),则需要使用\b
调整正则表达式字边界相应:
while (<>) {
print;
if (m/\bbb\b/) {
s/\bbb\b/ee/g;
print;
}
}
编辑:由于该请求专门用于&#34; perl命令,因为&#34;这是一个直接嵌入脚本的单行程序:
perl -n -e 'print; if (m/\bbb\b/) { s/\bbb\b/ee/g; print; }' < a.txt