我需要删除具有不同图案的线条,
例如
sed '/Paris/d' file.txt | cat -s
sed '/London/d' file.txt | cat -s
sed '/Rome/d' file.txt | cat -s
sed '/Pais/d' file.txt | cat -s
如何使用一系列城市名称并且只输入一次命令 sed 来完成此操作?
答案1
您可以sed
通过以下方式使用:
sed '/paris\|london\|rome\|pais/Id' cities
表示I
不匹配大小写d
表示删除模式空间中所有匹配的行。
答案2
使用 awk:
awk '{if(match(tolower($0),/(paris|london|rome)/)==0) print $0}' file > file
tolower
将整行转换为小写
match
如果匹配则返回子字符串的起始位置 否则 0
awk 将仅打印不包含 Paris,London,Rome 的行并将其保存到同一文件中