删除包含两个索引之间的子字符串的所有行



如果某个字符串出现在第3个和第10个位置(字符(之间,我需要删除给定文件中包含该字符串的所有行。

这是我的sed命令:

sed '/^.{3}le.{10}/d' file-name

您可以使用

sed '/^.{3}.{0,5}le/d' filename

POSIX BRE正则表达式的意思是:

  • ^-字符串的开头
  • .{3}-任意三个字符
  • .{0,5}-任意0到5个字符
  • le-一个le子串

因此,3+5为8,le长度为2,因此该模式仅删除第三和第十位置之间包含le的行。

您也可以使用awk:

awk '!index(substr($0,4,6), "le")' filename

这里,

  • substr($0,4,6)-获取以第四个字符开头的6个字符的子字符串
  • !index(..., "le")-如果上面的子字符串不包含le,则返回true

最新更新