Pes*_*The 5 regex bash perl awk sed
我需要将和之间的每个字符替换为:axxzzhello
#input
a xxab abzz ca xxbczz aaa axxazza xxczzaxxczz
#output
a xxhellob hellobzz ca xxbczz aaa axxhellozza xxczzaxxczz
Run Code Online (Sandbox Code Playgroud)
这适用于一对,不适用于更多对(它替换第一个和最后一个之间的xx/zz每个):axxzz
sed -r ':rep; s/(xx.*)a(.*zz)/\1hello\2/; trep'
Run Code Online (Sandbox Code Playgroud)
我认为最好的方法是使用更高级的正则表达式,例如perl.
我正在寻找bash、sed、awk或的解决方案perl。使用基本/扩展正则表达式是否可以完成此任务?当配对具有更多字符(例如xxxxxx/zzzzzz)时,不会变得难以理解的解决方案是首选。
是的,最好使用 Perl
perl -pe's/xx(.+?)zz/"xx".$1=~s|a|hello|gr."zz"/ge' file.txt
Run Code Online (Sandbox Code Playgroud)