GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver des mots répétés dans un texte

Avec grep GNU :

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

Sortie :

twice twice
as as
here here
123 123

Options :

-E :Interpréter (\b.+) \1\b sous forme d'expression régulière étendue.

-o  :n'imprime que les parties correspondantes (non vides) d'une ligne correspondante, chacune de ces parties sur une ligne de sortie distincte.

Regex :

\b :est une limite de mot de largeur nulle.

.+ :Correspond à un ou plusieurs caractères.

\1 :Les parenthèses () marquer un groupe de capture et \1 signifie utiliser ici la valeur du premier groupe de capture.

Référence :FAQ sur les expressions régulières de débordement de pile


Il semble que quelque chose comme ceci est ce que vous voulez (en utilisant n'importe quel awk dans n'importe quel shell sur chaque machine UNIX) :

$ 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

mais veuillez poser une nouvelle question avec un exemple d'entrée plus représentatif et une sortie attendue, y compris la ponctuation, les différences de capitalisation, plusieurs paragraphes, les mots en double au début/à la fin des phrases et divers autres cas non triviaux sont affichés.


Linux
  1. Comment utiliser la commande Grep pour rechercher du texte dans des fichiers

  2. Rechercher des fichiers texte contenant deux mots différents (n'importe quel ordre, n'importe quelle ligne) ?

  3. Comment trouver des parenthèses sans correspondance dans un fichier texte ?

  4. Éditeur Vi et Vim :12 exemples puissants de recherche et de remplacement

  5. Commandes d'accès aux fichiers sous Linux - rechercher, trier, tête, queue

Comment rechercher pour trouver un mot dans Vim ou Vi Text Editor

Commande Grep sous Linux (Rechercher du texte dans des fichiers)

Comment rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

Rechercher du texte dans des fichiers sous Linux à l'aide de grep

Comment rechercher et remplacer du texte dans Vim

Éditeur de texte/journal avec prise en charge de l'actualisation automatique