Sur*_*mar 12 sed perl text-processing
如何使用sed
命令替换文件中第三次出现的字符串。
例子:
仅更改文件中第三次出现的is
to us
。
我的输入文件包含:
hai this is linux.
hai this is unix.
hai this is mac.
hai this is unchanged.
Run Code Online (Sandbox Code Playgroud)
预期的输出是:
hai this is linux.
hai thus is unix.
hai this us mac.
hai this is unchanged.
Run Code Online (Sandbox Code Playgroud)
Sté*_*las 12
使用perl
.
要更改第 3次出现:
perl -pe 's{is}{++$n == 3 ? "us" : $&}ge'
Run Code Online (Sandbox Code Playgroud)
每 3次更改一次:
perl -pe 's{is}{++$n % 3 ? $& : "us"}ge'
Run Code Online (Sandbox Code Playgroud)
sed
如果以前的换行符被替换为任何其他字符,您可以使用它,例如:
tr '\n' '\000' | sed 's/is/us/3' | tr '\000' '\n'
Run Code Online (Sandbox Code Playgroud)
与纯 (GNU) 相同sed
:
sed ':a;N;$!ba;s/\n/\x0/g;s/is/us/3;s/\x0/\n/g'
Run Code Online (Sandbox Code Playgroud)
(sed
换行符无耻地从/sf/answers/87653401/窃取)