这是对现有问题的后续问题- 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
答案 0 :(得分:0)
这可能对您有用(GNU sed):
sed -r 's/-?\w{7}([-.]\w{1,6}\b)*//2g' file
删除可选的-
,后跟7个字符的单词,然后删除零个或多个1到6个字符之间的单词,其后加一个.
或一个-
。
测试数据的最后一行将仅为testing
,因为2g
在GNU sed中意味着2或更多。