使用 sed 删除除倒数第三个和倒数第二个单词之外的所有单词出现次数

使用 sed 删除除倒数第三个和倒数第二个单词之外的所有单词出现次数

我正在尝试使用 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

相关内容