我在一个文件中有大约1200万行,并且想要删除包含多个破折号的行。几个例子:
e--xa-mple e-xa-mple
有任何可能的变化。 Sed,awk,grep或其他任何东西都可以工作。
提前多多感谢。
答案 0 :(得分:6)
您可以使用设置短划线作为字段分隔符的字段数来播放:
awk -F- 'NF<=2' file
要替换当前文件,您可以执行以下操作:
awk -F- 'NF<=2' file > tmp_file && mv tmp_file file
-F-
将-
设置为字段分隔符。NF
代表字段数。NF<=2
为true,表示该行包含0或1个短划线。因此,它不会打印任何具有两个以上字段的行,即2个或更多个破折号。$ cat a
e--xa-mple
e-xa-mple
example
e-xample
$ awk -F- 'NF<=2' a
example
e-xample
答案 1 :(得分:5)
简单的sed:
sed '/-.*-/d' yourfile
或更快,避免在出现第二个破折号时扫描整条线:
sed '/-[^-]*-/d' yourfile
答案 2 :(得分:0)
使用单行perl
perl -ne "print unless /-.*-/" file
答案 3 :(得分:0)