GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wiederholte Wörter in einem Text finden

Mit GNU grep:

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

Ausgabe:

twice twice
as as
here here
123 123

Optionen :

-E :Interpretiere (\b.+) \1\b als erweiterter regulärer Ausdruck.

-o :Gibt nur die übereinstimmenden (nicht leeren) Teile einer übereinstimmenden Zeile aus, wobei jeder dieser Teile in einer separaten Ausgabezeile ausgegeben wird.

Regex :

\b :Ist eine Wortgrenze mit der Breite null.

.+ :Entspricht einem oder mehreren Zeichen.

\1 :Die Klammern () markieren Sie eine Fanggruppe und \1 bedeutet hier den Wert aus der ersten einfangenden Gruppe verwenden.

Referenz:Häufig gestellte Fragen zu regulären Ausdrücken bei Stapelüberläufen


Es hört sich so an, als ob Sie Folgendes wollen (unter Verwendung eines beliebigen awk in einer beliebigen Shell auf jeder UNIX-Box):

$ 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

aber stellen Sie bitte eine neue Frage mit einer wirklich repräsentativeren Beispieleingabe und erwarteten Ausgabe, einschließlich Interpunktion, Unterschieden in der Großschreibung, mehreren Absätzen, doppelten Wörtern am Anfang/Ende von Sätzen und verschiedenen anderen nicht trivialen Fällen.


Linux
  1. Eine eingehende Mail von Text/plain zu Text/html ändern?

  2. Wie finde ich nicht übereinstimmende Klammern in einer Textdatei?

  3. Grep findet keinen Text in dieser Datei?

  4. So finden Sie bestimmten Text mit GREP unter Linux

  5. Vi- und Vim-Editor:12 leistungsstarke Beispiele zum Suchen und Ersetzen

So suchen Sie, um ein Wort im Vim- oder Vi-Texteditor zu finden

Grep-Befehl in Linux (Text in Dateien suchen)

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

Finden Sie Text in Dateien unter Linux mit grep

So finden und ersetzen Sie Text in Vim

Text-/Log-Editor mit Auto-Refresh-Unterstützung