简短的回答:
以下是如何仅删除文字“ _xxx
”的方法。
perl -pli.bak -e 's/_xxx$//' filename
详细解释:
由于 Perl 以与线路噪音无法区分的代码而闻名,这里是对这些步骤的解释。
-p
创建一个看起来像这样的隐式循环:
while( <> ) {
# Your code goes here.
}
continue {
print or die;
}
-l
有点像“auto-chomp”的行为,但也会在再次打印之前将结束的行放回行上。它比这更复杂,但在最简单的使用中,它会将隐式循环更改为如下所示:
while( <> ) {
chomp;
# Your code goes here.
}
continue {
print $_, $/;
}
-i 告诉 Perl “就地编辑”。在幕后,它会创建一个单独的输出文件,最后它会移动该临时文件以替换原始文件。
.bak
告诉 Perl 它应该创建一个名为 'originalfile. bak ' 这样如果你犯了一个错误,它可以很容易地逆转。
在替换内部:
s/
_xxx$ # Match (but don't capture) the final '_xxx' in the string.
/$1/x; # Replace the entire match with nothing.
参考资料:
For future reference, information on the command line switches used in Perl "one-liners" can be obtained in Perl's documentation at perlrun. A quick introduction to Perl's regular expressions can be found at perlrequick. And a quick overview of Perl's syntax is found at perlintro.