GNU/Linux >> Linux の 問題 >  >> Linux

テキスト内で繰り返される単語を見つける

GNU grep を使用:

echo 'Hi! Hi, same word twice twice, as as here here! ! ,123 123 need' |  grep -Eo '(\b.+) \1\b'

出力:

twice twice
as as
here here
123 123

オプション :

-E :(\b.+) \1\b を解釈します 拡張正規表現として。

-o :一致する行の一致した (空でない) 部分のみを出力し、そのような部分はそれぞれ別の出力行に出力します。

正規表現 :

\b :ゼロ幅の単語境界です。

.+ :1 つ以上の文字に一致します。

\1 :括弧 () キャプチャ グループと \1 をマークします ここで最初のキャプチャ グループの値を使用することを意味します。

参照:スタック オーバーフローの正規表現に関するよくある質問


これはあなたが望むもののように思えます (すべての UNIX ボックスの任意のシェルで任意の awk を使用します):

$ cat tst.awk
BEGIN { RS=""; ORS="\n\n" }
{
    head = prev = ""
    tail = $0
    while ( match(tail,/[[:alpha:]]+/) ) {
        word = substr(tail,RSTART,RLENGTH)
        head = head substr(tail,1,RSTART-1) (word == prev ? "" : word)
        tail = substr(tail,RSTART+RLENGTH)
        prev = word
    }
    print head tail
}

$ cat file
the quick quick brown
fox jumped jumped
jumped over the lazy
lazy dogs back

$ awk -f tst.awk file
the quick  brown
fox jumped
 over the lazy
 dogs back

ただし、句読点、大文字と小文字の違い、複数の段落、文頭と文末の単語の重複、およびその他のさまざまな重要なケースが示されているなど、より真に代表的なサンプル入力と期待される出力を使用して、新しい質問をしてください。


Linux
  1. 2つの異なる単語が存在するテキストファイルを検索しますか(任意の順序、任意の行)?

  2. テキストファイルで一致しない角かっこを見つける方法は?

  3. Grepはこのファイルでテキストを見つけることができませんか?

  1. Linux のファイル アクセス コマンド – find、sort、head、tail

  2. テキストファイルの行末を見つける方法は?

  3. Linuxでテキストを含まないテキストファイルを見つける方法は?

  1. Grepコマンドを使用してファイル内のテキストを検索する方法

  2. Linuxでsedを使用してテキストファイルを検索および置換する

  3. Linux で GREP を使用して特定のテキストを検索する方法