GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver le mot le plus long dans un fichier texte

Autre solution :

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}

Normalement, vous voudriez utiliser un while read boucle au lieu de for i in $(cat) , mais puisque vous voulez que tous les mots soient divisés, dans ce cas, cela fonctionnerait bien.

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

sed 's/ /\n/g' YOUR_FILENAME | sort | uniq | awk '{print length, $0}' | sort -nr | head -n 1
  1. lire le fichier et diviser les mots (via sed)
  2. supprimer les doublons (via sort | uniq)
  3. prefixez chaque mot avec sa longueur (awk)
  4. trier la liste par longueur de mot
  5. imprimer le seul mot avec la plus grande longueur.

oui, ce sera plus lent que certaines des solutions ci-dessus, mais cela ne nécessite pas non plus de se souvenir de la sémantique de bash for loops.


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

echo $longest

Linux
  1. Utilisation avancée du visualiseur de fichiers avec moins de texte sous Linux

  2. Comment insérer du texte avant la première ligne d'un fichier ?

  3. Créer des fichiers en utilisant la ligne de commande sous Linux

  4. Comment insérer un texte au début d'un fichier ?

  5. Comment insérer du texte à la 1ère ligne d'un fichier à l'aide de sed ?

Comment compter les occurrences de mots dans un fichier texte

Comment ajouter du texte au début du fichier sous Linux

Comment rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

3 façons de créer rapidement un fichier texte via le terminal Linux

Comment puis-je obtenir la longueur d'un fichier vidéo à partir de la console ?

Conserver un historique de toutes les modifications apportées à un fichier texte