file:
aaa
88
bbb
88
88
ccc
88
ddd
eee
[code]
#修改匹配88的第一个
awk '/88/&&!i++{$0="---"}1' file
awk '/88/{i++} /88/&&(i==1){$0="---"}1' file
利用!i++只取第1个
awk '/88/&&!a[$1]++{$0="---"}1' file
#替换第三个
awk '/88/{i++} /88/&&(i==3){$0="---"}1' file
awk '/88/&&(++i=3){$0="---"}1' file
#替换第N个
awk '/88/{i++} /88/&&(i==N){$0="---"}1' file
awk '/88/&&(++i=n){$0="---"}1' file
#替换最后一个
awk 'BEGIN{while(getline<"file"){j++;if(/88/)i=j}}NR==i{$0="---"}1' file
BEGIN{while (getline < "file")} 读取文件全部内容
j++ 行计数
if(/88/)i=j 将匹配的行号用i记录下来
因为是逐行处理,只能保存最后的记录
NR==i 执行打印
sed ':a;/\n88/!{$s/88/--/;N;ba};P;D' file
sed ':a;N;$!ba;s/\(.*\)88/\1--/' fileawk之修改匹配的第N个内容
最新推荐文章于 2025-08-11 10:40:18 发布
本文介绍如何利用awk及sed命令精确地替换文本文件中指定出现次数的字符串。通过不同awk命令实例展示了替换第一个、第三个乃至任意第N个匹配项的方法,并提供了替换最后一个匹配项的解决方案。此外还探讨了sed命令的两种应用方式。
5764

被折叠的 条评论
为什么被折叠?



