GNU/Linux >> Linux Esercitazione >  >> Linux

Trovare la parola più lunga in un file di testo

Un'altra soluzione:

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}

Normalmente, dovresti usare un while read loop invece di for i in $(cat) , ma poiché vuoi che tutte le parole siano divise, in questo caso funzionerebbe bene.

#!/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. leggere il file e dividere le parole (tramite sed)
  2. rimuovi i duplicati (tramite sort | uniq)
  3. prefisso ogni parola con la sua lunghezza (awk)
  4. ordina l'elenco in base alla lunghezza della parola
  5. stampa la singola parola con la lunghezza maggiore.

sì, questo sarà più lento di alcune delle soluzioni di cui sopra, ma non richiede nemmeno di ricordare la semantica di bash per i cicli.


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

echo $longest

Linux
  1. Come inserire del testo prima della prima riga di un file?

  2. Qual è il modo migliore per estrarre un segmento da un file di testo?

  3. Il Bash '?

  4. Mv Atomic è sulle F?

  5. Grep Word all'interno di un file, quindi copia il file?

Come contare le occorrenze di parole in un file di testo

Come aggiungere testo all'inizio del file in Linux

Come trovare e sostituire testo, parola o stringa in un file

3 modi per creare rapidamente un file di testo tramite il terminale Linux

Potrebbe meno mostrare la proporzione visualizzata del file di testo?

Come posso ottenere la lunghezza di un file video dalla console?