GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Suche nach dem längsten Wort in einer Textdatei

Eine andere Lösung:

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}

Normalerweise würden Sie einen while read verwenden wollen Schleife statt for i in $(cat) , aber da Sie möchten, dass alle Wörter geteilt werden, würde es in diesem Fall gut funktionieren.

#!/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-Einzeiler.

sed 's/ /\n/g' YOUR_FILENAME | sort | uniq | awk '{print length, $0}' | sort -nr | head -n 1
  1. Datei lesen und Wörter teilen (über sed)
  2. Duplikate entfernen (via sort | uniq)
  3. stell jedem Wort seine Länge voran (awk)
  4. sortiere die Liste nach der Wortlänge
  5. drucke das einzelne Wort mit der größten Länge.

Ja, das wird langsamer sein als einige der oben genannten Lösungen, aber es erfordert auch nicht, sich an die Semantik von Bash für Schleifen zu erinnern.


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

echo $longest

Linux
  1. Was ist der beste Weg, um ein Segment aus einer Textdatei zu entnehmen?

  2. Die Bash‘?

  3. Ist Mv Atomic auf den Fs?

  4. Grep Word in einer Datei und dann die Datei kopieren?

  5. Linux – Enthält der Vmlinux-Header die Länge des Kernel-Images?

So zählen Sie Wortvorkommen in einer Textdatei

So fügen Sie Text am Anfang einer Datei in Linux hinzu

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

3 Möglichkeiten zum schnellen Erstellen einer Textdatei über das Linux-Terminal

Wie füge ich mit sed Text in die erste Zeile einer Datei ein?

Wie kann ich die Länge einer Videodatei von der Konsole abrufen?