GNU/Linux >> Znalost Linux >  >> Linux

Najděte opakovaná slova v textu

S GNU grep:

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

Výstup:

twice twice
as as
here here
123 123

Možnosti :

-E :Interpretujte (\b.+) \1\b jako rozšířený regulární výraz.

-o :Vytiskne pouze odpovídající (neprázdné) části odpovídající řádky, přičemž každá taková část bude na samostatném výstupním řádku.

Regulační výraz :

\b :Je hranice slova s ​​nulovou šířkou.

.+ :Odpovídá jednomu nebo více znakům.

\1 :Závorky () označte snímací skupinu a \1 znamená, že zde použijte hodnotu z první skupiny zachycení.

Odkaz:Časté dotazy k regulárním výrazům přetečení zásobníku


Zní to, že něco takového je to, co chcete (pomocí libovolného awk v jakémkoli shellu na každém UNIXovém boxu):

$ 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

ale položte prosím novou otázku se skutečně reprezentativnějším vzorovým vstupem a očekávaným výstupem, včetně interpunkce, rozdílů v psaní velkých písmen, více odstavců, duplicitních slov na začátku/konci vět a jsou zobrazeny různé další netriviální případy.


Linux
  1. Hledat textové soubory, kde existují dvě různá slova (jakékoli pořadí, libovolný řádek)?

  2. Upravit příchozí poštu z textu/prostého na text/html?

  3. Grep nenašel text v tomto souboru?

  1. Editor Vi a Vim:12 účinných příkladů hledání a nahrazování

  2. Příkazy pro přístup k souborům v Linuxu – najdi, seřaď, zamiř, ocas

  3. Jak zjistit konce řádků v textovém souboru?

  1. Jak používat příkaz Grep k vyhledání textu v souborech

  2. Použití sed k nalezení a nahrazení textových souborů v Linuxu

  3. Jak najít textové soubory, které neobsahují text v Linuxu?