我想编写一个 perl one-liner 来替换两个特定的连续字符串的每个实例,这些字符串可能会或可能不会被空格分隔。
例如,假设我的两个字符串是john paul
并且george
我想用pete
. 运行单线
$ cat ~/foo
john paulgeorge
john paul george
john paul
george
george john paul
Run Code Online (Sandbox Code Playgroud)
应该导致
$ cat ~/foo
pete
pete
pete
george john paul
Run Code Online (Sandbox Code Playgroud)
我唯一想到的是
$ perl -p -i -e 's/john paul\s*george/pete/g' ~/foo
Run Code Online (Sandbox Code Playgroud)
但这导致
$ cat ~/foo
pete
pete
john paul
george
george john paul
Run Code Online (Sandbox Code Playgroud)
有没有办法改变我的单线?
您唯一需要添加到单行中的是将文件作为单个字符串的选项:
perl -0777 -p -i -e 's/john paul\s*george/pete/g' ~/foo
# ^^^^^
Run Code Online (Sandbox Code Playgroud)
请参阅http://perldoc.perl.org/perlrun.html#Command-Switches