GNU/Linux >> Znalost Linux >  >> Linux

Získat seřazený počet výskytů slov v textovém souboru všech slov a tiskový výstup?

Měl jsem příkaz, který by fungoval přes textový soubor, spočítal všechny výskyty slov a vytiskl jej takto:

[email protected] $˜ magic-command-i-forgot | with grep | and awk | sort ./textfile.txt
66: the
54: and
32: I
16: unix
12: bash
5:  internet
3:  sh
1: GNU/Linux

Nehledá tedy řádek po řádku, ale slovo po slovu, a to pro všechna slova, nejen pro 1 slovo. Už jsem to dávno našel někde na internetu, ale nemůžu to najít ani si to nepamatuji..

Přijatá odpověď:

Použil bych tr místo awk :

echo "Lorem ipsum dolor sit sit amet et cetera." | tr '[:space:]' '[\n*]' | grep -v "^\s*$" | sort | uniq -c | sort -bnr
  • tr pouze nahradí mezery novými řádky
  • grep -v "^\s*$" ořízne prázdné řádky
  • sort připravit jako vstup pro uniq
  • uniq -c počítat výskyty
  • sort -bnr seřadí v číselném obráceném pořadí a ignoruje mezery

Páni. ukázalo se, že je to skvělý příkaz k počítání nadávek na řádky

najít -name “*.py” -exec cat {} \; | tr ‘[:mezera:]’ ‘[\n*]’ | grep -v “^\s*$” | seřadit | uniq -c | seřadit -bnr | grep fuck


Linux
  1. Jak používat příkaz WC k tisku znaků, bajtů, nového řádku a počtu slov v Linuxu

  2. Tisknout všechny soubory ve složce?

  3. Jak najít poslední výskyt vzoru a vytisknout všechny řádky po posledním výskytu?

  1. Seřadit výstup podle sloupce?

  2. Proč uniq počítá stejná slova jako různá?

  3. jak dostat sha1sum na binární výstup?

  1. Jak mohu získat seznam všech chybně napsaných slov v textu pomocí Linuxu?

  2. Jak získat pouze ID všech běžících procesů?

  3. Jak seřadit tento výstup 1,10,11..2