我正在尝试使用 sed 删除除第三次和倒数第二次出现之外的所有出现的单词,例如,如果输入是:
1 liam
2 liam
3 liam
4 liam
5 liam
6 liam
输出应该是:
1
2
3 liam
4
5 liam
6
答案1
因此如果可以的话可以用 awk 来处理。我们将字段分隔符设置为您要替换的单词。假设其中没有正则表达式字符。然后将记录分隔符设置为空正则表达式并循环遍历字段。将字段分隔符替换回第三个和倒数第三个。
$ awk -F 'liam' '
{
for (i=1;i<NF-1; i++) {
if (i==3||i==NF-2) {
sub(/$/, FS, $i)
}
}
}
1' RS='^$' OFS= file