GNU/Linux >> Belajar Linux >  >> Linux

Menemukan kata terpanjang dalam file teks

Solusi lain:

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}

Biasanya, Anda ingin menggunakan while read loop alih-alih for i in $(cat) , tetapi karena Anda ingin semua kata dipisahkan, dalam hal ini akan berhasil.

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

sed 's/ /\n/g' YOUR_FILENAME | sort | uniq | awk '{print length, $0}' | sort -nr | head -n 1
  1. baca file dan pisahkan kata-kata (melalui sed)
  2. hapus duplikat (via sort | uniq)
  3. awali setiap kata dengan panjangnya (awk)
  4. urutkan daftar berdasarkan panjang kata
  5. cetak satu kata dengan panjang terbesar.

ya ini akan lebih lambat daripada beberapa solusi di atas, tetapi juga tidak perlu mengingat semantik bash untuk loop.


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

echo $longest

Linux
  1. Bagaimana Cara Menyisipkan Teks Sebelum Baris Pertama Sebuah File?

  2. Buat file dengan menggunakan baris perintah di Linux

  3. Bagaimana cara menyimpan output dari perintah awk ini ke file?

  1. Bisakah lebih sedikit menunjukkan proporsi file teks yang dilihat?

  2. Hapus dua baris terakhir dari file teks yang sangat besar secara efisien

  3. Simpan riwayat semua modifikasi pada file teks

  1. Penggunaan lanjutan dari penampil file teks yang lebih sedikit di Linux

  2. Apa Cara Terbaik Untuk Mengambil Segmen Dari File Teks?

  3. Basa'?