如何忽略字母数字的第一次出现并在第二次出现之后替换所有内容?

时间:2018-08-09 14:53:22

标签: sed

这是对现有问题的后续问题- How to replace fixlength alphanumeric character?, 有两种用例-

  

a。删除行首第二个字母数字处的所有内容(如果有)   它包含两个大小为7的数字。

     

b。删除行首1个字母数字处的所有内容(如果有)   它仅包含一个大小为7的数字。

testing-1xs-a-2x-782b1x9.abc.txt
testing-12a-b-2y-486eee2.bcd.txt
testing-1a-c-2z-b62cx7d.cde.txt
testing-1aasdfa-c-2z-b62cx7d.cde.txt

我尝试了此命令-sed 's/[a-zA-Z0-9]{7}.*//2g' file

预期输出:

testing-1xs-a-2x
testing-12a-b-2y
testing-1a-c-2z
testing-1aasdfa-c-2z

1 个答案:

答案 0 :(得分:0)

这可能对您有用(GNU sed):

sed -r 's/-?\w{7}([-.]\w{1,6}\b)*//2g' file

删除可选的-,后跟7个字符的单词,然后删除零个或多个1到6个字符之间的单词,其后加一个.或一个-

测试数据的最后一行将仅为testing,因为2g在GNU sed中意味着2或更多。