2017-11-04 9 views
1

1文字(複数回繰り返すことができます)またはすべての行に少なくとも2つの一意の文字を含む必要があるすべての行のファイルをフィルタリングする必要があります。すべての行には1つの単語しか含まれず、すべての単語は小文字であることはわかっています。BASHで一意の文字のみを含む行を削除する

ファイル:

hello 
world 
pppppppp 
foo 
bar 
iiiiiiii 
blue 
red 
oooooooo 
io 
u 

出力:

hello 
world 
foo 
bar 
blue 
red 
io 

感謝。 grepを行うには

+0

をあなたは何を試してみましたか? Wecomeに。 [How to ask](https://stackoverflow.com/help/how-to-ask)と[最小限の、完全で検証可能な例(https://stackoverflow.com/help/mcve) SOのコミュニティガイドラインにあなたの質問を編集してください。ありがとう。 – SherylHohman

+0

あなたは@randomirの答えを受け入れました。空白の行や行だけをドットやその他の特殊文字( '==='、 '%')でフィルタリングしたくないのは正しいですか? –

答えて

2

簡単:

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

これは(-v)のいずれかであるすべての行(1)単一の英数字(^\w$)をフィルタリングし、または(2)1つの英数字を少なくとも二回繰り返し(^(\w)\1+$)。

フィルタアウトするために、単一の、または繰り返し単一の文字(@janosと@WalterAのコメントで提案されているように)とライン:

grep -vE '^(.)\1*$' file 
関連する問題