perl:使用特定字符串复制行并替换复制行中的字符串

时间:2017-03-27 13:20:35

标签: perl

这是我的问题。假设我有一个文件,让我们说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更好的选择来实现这个目标吗?

1 个答案:

答案 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