GNU/Linux >> Znalost Linux >  >> Linux

Vyhledání nejdelšího slova v textovém souboru

Jiné řešení:

for item in  $(cat "$infile"); do
  length[${#item}]=$item          # use word length as index
done
maxword=${length[@]: -1}          # select last array element

printf  "longest word '%s', length %d" ${maxword} ${#maxword}

Normálně byste chtěli použít while read smyčka namísto for i in $(cat) , ale protože chcete, aby byla všechna slova rozdělena, v tomto případě by to fungovalo OK.

#!/bin/bash
longest=0
for word in $(<so.txt)
do
    len=${#word}
    if (( len > longest ))
    then
        longest=$len
        longword=$word
    fi
done
printf 'The longest word is %s and its length is %d.\n' "$longword" "$longest"

bash one liner.

sed 's/ /\n/g' YOUR_FILENAME | sort | uniq | awk '{print length, $0}' | sort -nr | head -n 1
  1. číst soubor a rozdělovat slova (přes sed)
  2. odstranit duplikáty (pomocí řazení | uniq)
  3. před každým slovem uveďte jeho délku (awk)
  4. seřadit seznam podle délky slova
  5. vytiskněte jedno slovo s největší délkou.

ano, bude to pomalejší než některá z výše uvedených řešení, ale také to nevyžaduje zapamatování sémantiky bash for smyček.


longest=""
for word in $(cat so.txt); do
    if [ ${#word} -gt ${#longest} ]; then
        longest=$word
    fi
done

echo $longest

Linux
  1. Pokročilé použití prohlížeče méně textových souborů v Linuxu

  2. Jaký je nejlepší způsob, jak vyjmout segment z textového souboru?

  3. Uchovávejte historii všech úprav v textovém souboru

  1. The Bash ‘?

  2. Je MV Atomic na Fs?

  3. Grep Word v souboru a pak zkopírujte soubor?

  1. Jak vložit text před první řádek souboru?

  2. Linux – Obsahuje hlavička Vmlinux délku obrazu jádra?

  3. Vytvářejte soubory pomocí příkazového řádku v Linuxu