Saya punya perintah yang akan bekerja melalui file teks, menghitung semua kemunculan kata-kata dan mencetaknya seperti ini:
user@box $˜ magic-command-i-forgot | with grep | and awk | sort ./textfile.txt
66: the
54: and
32: I
16: unix
12: bash
5: internet
3: sh
1: GNU/Linux
Jadi ia tidak mencari baris demi baris, tetapi kata demi kata, dan ia melakukannya untuk semua kata, bukan hanya untuk 1 kata. Saya telah menemukannya di suatu tempat di internet sejak lama, tetapi saya tidak dapat menemukan atau mengingatnya ..
tr -s
untuk menangani banyak ruang, terutama saat menemukan lekukan.-g
(--general-numeric-sort
) opsisort
mungkin lebih disukai dalam beberapa kasus. Misalnyasort -n
akan tetap10\n1 4
apa adanya, memperlakukan1 4
apa adanya14
, sementarasort -g
akan memperlakukannya dengan benar1 4\n10
.echo "Lorem ipsum dolor sit sit amet et cetera." | tr ' ' '\n' | grep -v "^$" | sort | uniq -c | sort -bnr
Perhatikan bahwa saya seorang pemula, jadi saya mungkin salah, silakan memberi saran.Untuk membagi input menjadi kata-kata, ganti karakter apa pun yang Anda anggap sebagai pemisah kata oleh baris baru.
sumber
Tidak menggunakan grep dan awk tetapi ini tampaknya melakukan apa yang Anda inginkan:
sumber
set -f
), dan memperlakukan tanda baca sebagai bagian dari kata-kata (yang dapat diperbaiki dengan canggung dengan menambahkan karakter tanda baca keIFS
- semoga berhasil mendukung set karakter non-ASCII). Ini tidak akan bagus dengan file input yang sangat besar, karena menyimpan seluruh file dalam memori (sort
lebih pintar).Saya percaya Anda mencari sesuatu seperti ini?
tentu saja kamu juga bisa melakukan hal yang sama
awk
:)sumber
Menggunakan
awk/sort/uniq
solusi:sumber
macam naik setelah membelah file menjadi kata-kata.
The grep sederhana akan menemukan
fish
difisheye
, jadi Anda harus meningkatkan perintah grep untuk mencegah pertandingan parsial.Memakan waktu 3 detik untuk file teks 25k pada mesin di zaman dulu, HDD klasik (IDE).
Untuk file yang lebih besar atau operasi yang sering dilakukan pendekatan peta hash akan lebih baik, tetapi untuk pekerjaan yang jarang dijalankan atau file yang lebih kecil saja, itu mungkin sudah cukup.
sumber