如果某个字符串出现在第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