【发布时间】:2014-04-30 09:11:30
【问题描述】:
我在一个文件中有大约 1200 万行,我想删除包含多个破折号的行。举几个例子:
例子 例子可能有任何变化。 sed、awk、grep 或其他任何东西都可以工作。
非常感谢。
【问题讨论】:
我在一个文件中有大约 1200 万行,我想删除包含多个破折号的行。举几个例子:
例子 例子可能有任何变化。 sed、awk、grep 或其他任何东西都可以工作。
非常感谢。
【问题讨论】:
您可以使用将破折号设置为字段分隔符的字段数:
awk -F- 'NF<=2' file
要替换当前文件,你可以这样做:
awk -F- 'NF<=2' file > tmp_file && mv tmp_file file
-F- 将 - 设置为字段分隔符。NF 代表字段数。NF<=2 在字段数为 1 或 2 时为真,这意味着该行包含 0 或 1 个破折号。因此,它不会打印任何包含两个以上字段(即 2 个或更多破折号)的行。$ cat a
e--xa-mple
e-xa-mple
example
e-xample
$ awk -F- 'NF<=2' a
example
e-xample
【讨论】:
awk -F- 'NF<3' 可以使用:)
awk -F- '! (NF>2)' :D 我更愿意指出我想要的限制,而不是我不想要的第一个限制。但当然,每个人都有自己的口味:)
sed中的简单一:
sed '/-.*-/d' yourfile
或更快,避免在出现第二个破折号时扫描整行:
sed '/-[^-]*-/d' yourfile
【讨论】:
单线perl
perl -ne "print unless /-.*-/" file
【讨论】:
【讨论】: