各単語が別の行に配置される大きなテキストファイルがあり、文字を含む各単語を最大1回検索する必要があります。
(私が見つけなければならない単語の例:指、石炭、夢、私、ピーナッツ)
(出力で受信を許可しない単語の例:test(2 tを含む)、strict(2 sを含む)、zepelin(2 eを含む))
答え1
GNUの使用sed
:
sed -E '/(.).*\1/d' <file
GNUを使用すると、sed
以下のように正規表現でキャプチャグループと逆参照を使用できます。私たちは単一の文字キャプチャを使用し、必要に応じて他の文字をキャプチャ(.)
してから、同じ文字を再キャプチャします。パターンが一致した場合は入力からその行を削除し、そうでない場合はその行を印刷します。
例:
$ cat file
coal
dream
fingers
me
peanut
serious
zepelin
$ sed -E '/(.).*\1/d' <file
coal
dream
fingers
me
peanut
繰り返される文字を含む単語を探す:
$ sed -E '/(.).*\1/!d' <file
serious
zepelin
grep
これはGNUでも動作するようです:
$ grep -vE '(.).*\1' <file
coal
dream
fingers
me
peanut
$ grep -E '(.).*\1' <file
serious
zepelin