删除BASH中仅包含一个唯一字符的行

时间:2017-11-04 23:44:03

标签: bash shell

需要过滤包含一个字符的所有行的文件(可重复多次),换句话说,每行需要包含至少2个唯一字符。我知道每一行只包含一个单词,每个单词都是小写的。

文件:

hello
world
pppppppp
foo
bar
iiiiiiii
blue
red
oooooooo
io
u

输出:

hello
world
foo
bar
blue
red
io

感谢。

1 个答案:

答案 0 :(得分:2)

轻松使用grep

grep -vE '^\w$|^(\w)\1+$' file

这会过滤掉(-v)所有行,这些行是(1)单个字母数字字符(^\w$),或(2)重复至少两次的一个字母数字字符(^(\w)\1+$ )。

使用单个或重复的单个字符过滤掉行(如@janos和@WalterA的评论所示):

grep -vE '^(.)\1*$' file