Saya memiliki file CSV seperti ini:
abd,123,egypt,78
cde,456,england,45
Bagaimana saya bisa mendapatkan jumlah karakter hanya kata-kata kolom 3?
Saya tidak tahu bagaimana cara wc
melakukan ini.
cut -d, -f3 | tr -d '\n' | wc -m
(ingat yang wc -c
menghitung byte, bukan karakter:
$ echo a,1,españa,2 | cut -d, -f3 | tr -d '\n' | wc -c
7
$ echo a,1,españa,2 | cut -d, -f3 | tr -d '\n' | wc -m
6
)
wc
perintah untuk mendapatkan hasil!'wc
memberi saya jumlah karakter yang mengapa saya menunjukkan cara menggunakanwc
dalam konteks ini.sumber
awk
dirancang untuk memproses file berbasis kolom, baris demi baris. Masalahnya sangat cocok untuk alat ini.0
bukan baris kosong ketika file input kosong.awk
) bekerja sama dengan case (bekerja secara bersamaan) dalam semangat Unix yang khas. Anda mungkin memperhatikan bahwa cut + tr + wc one adalah 5 jenis secepat yang ini awk sendiri 5 kali lebih cepat dari yangperl
satu. (setidaknya pada sistem saya, di lokal UTF8, mencoba pada file 100MB).Sebuah
perl
solusi:atau versi yang lebih pendek:
sumber
-Mopen=:locale
untukperl
menggunakan user / definisi sistem apa karakter adalah, jika tidak mengasumsikan karakter byte. Coba padaa,1,españa,2
input di lokal UTF-8 (default pada kebanyakan sistem).sumber
Anda juga bisa menggunakannya
sumber
Dalam Perl:
sumber
Dengan file sampel Anda seperti ini:
Bekerja dengan
wc
untuk mendapatkan hitungan setiap baris bisa rumit. Anda harus memanggilnya untuk setiap string dari kolom 3 secara individual yang membuatnya agak sulit untuk melakukan apa yang Anda inginkan. Anda harus melihat melalui setiap baris CSV Anda, ekstrak kolom 3 dan kemudian sajikanwc
untuk mendapatkan jumlah karakter.sumber
Menggunakan
sed
danawk
Contoh:
Dua awk
Contoh:
sumber