Saya memiliki kode ini dalam skrip shell:
sort input | uniq -c | sort -nr > output
File input tidak memiliki spasi putih sebelumnya, tetapi output tidak. Bagaimana cara saya memperbaikinya? Ini dalam bash
command-line
uniq
Jeremy Wik
sumber
sumber
perl -pe 's/ *(\d+) /$1\t/'
(di sini beberapa alternatif ). Juga pipa ke clipboard denganxclip -selection c
menempel langsung ke spreadsheet.uniq -c
menambahkan spasi putih terkemuka. MisalnyaAnda bisa menambahkan perintah di akhir pipa untuk menghapusnya. Misalnya
sumber
FWIW Anda dapat menggunakan alat penyortiran yang berbeda untuk lebih banyak fleksibilitas. Python adalah salah satu alat tersebut.
Sumber
Secara teori ini bahkan akan lebih cepat daripada
sort
alat untuk input besar karena program di atas menggunakan tabel hash untuk mengidentifikasi garis duplikat daripada daftar yang diurutkan. (Alas itu menempatkan garis hitungan identik dalam urutan sewenang-wenang bukannya tatanan alami; ini dapat diamandemen dan masih lebih cepat dari duasort
pemanggilan.)Format output
Jika Anda menginginkan lebih banyak fleksibilitas pada format output, Anda dapat melihat ke dalam fungsi
print()
danformat()
built-in.Misalnya, jika Anda ingin mencetak angka hitungan dalam oktal dengan hingga 7 angka nol di depan dan diikuti oleh tab alih-alih karakter spasi dengan terminator garis NUL, ganti baris terakhir dengan:
Pemakaian
Simpan skrip dalam file, katakan
sort_count.py
, dan aktifkan dengan Python:sumber
Terjemahkan spasi putih terkemuka ke dalam spasi putih tunggal dengan tr -s dan kemudian cetak output dari karakter ke-2 dengan cut -c.
sumber