我已经看到过诸如使用sed根据字符数而不是单词删除行的命令。
例如。我有一个文本文件,如
word1
word1 word2
word1 word2 word3
word1 word2 word3 word4
word1 word2 word4 word5
我如何使用(sed或awk)删除少于3个单词的行,因此输出如下:
word1 word2 word3
word1 word2 word3 word4
word1 word2 word4 word5
答案 0 :(得分:4)
以下是使用awk
执行此操作的方法,如果其超过2
个字段,请将其打印出来:
awk 'NF>2' file
word1 word2 word3
word1 word2 word3 word4
word1 word2 word4 word5
答案 1 :(得分:4)
你可以在awk中完成这个,
$ awk 'NF>=3' file
word1 word2 word3
word1 word2 word3 word4
word1 word2 word4 word5
打印包含三个或更多字段的行。
答案 2 :(得分:1)
您可以尝试sed
命令
sed -n 's/\([^ ]\+ \)\{2,\}/&/p' file_name
[^ ] - until space match each characters
{2,} - which is used to match the preceding pattern more than 2
([^ ]\+ ) - Which is used to match the word.
答案 3 :(得分:1)
sed -n '/[^ ]\([^ ]* *[^ ]\)\{2\}/ p' YourFile
# or
sed -n '/[^ ] *[^ ][^ ]* *[^ ]/ p' YourFile
Regx是:至少1个非空格,至少有1个空格,至少有1个非空格,至少有1个空格,至少有1个非空格
确保(word1 word2
)没有将字母空间作为单词分隔符,而没有任何单词在四肢上分开
答案 4 :(得分:1)
这可能适合你(GNU sed):
sed -n 's/\<//3p' file