Solusi Perl:
perl -ne 'print if tr/,// > 4'
-n
membaca file baris demi baris- operator tr mengembalikan jumlah kecocokan.
Untuk mencetak baris dengan kurang dari 4, ubah saja >
ke <
.
Menggunakan grep
perintah:
grep -E '(,.*){5}' myfile
melakukan pekerjaan. Penjelasan:
-E
:gunakan Extended Regex...
'(,.*)
:... untuk menemukan satu koma diikuti oleh sejumlah karakter, bahkan nol...
{5}'
:... dan ulangi pola sebelumnya sebanyak 5 kali.
Jika Anda ingin mengambil baris dengan kurang dari 4 koma, Anda memerlukan:
grep -xE '([^,]*,){0,3}[^,]*' myfile
Kali ini, kita membutuhkan -x
jadi polanya berlabuh di awal dan akhir garis sehingga cocok dengan garis penuh. Dan kami menggunakan [^,]*
bukannya .*
karena yang terakhir akan dengan senang hati mencocokkan string yang berisi ,
s sebagai .
cocok dengan apa saja karakter.
Pendekatan lain adalah membalik dengan -v
pendekatan sebelumnya. "Lebih sedikit dari 4" sama dengan tidak "setidaknya 4", jadi:
grep -vE '(,.*){4}' myfile
awk
versi:
awk -F, 'NF > 5' myfile