GNU/Linux >> Belajar Linux >  >> Linux

Cara grep baris yang memiliki lebih dari jumlah karakter khusus tertentu

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

Linux
  1. Cara Menampilkan Baris Tertentu dari File di Baris Perintah Linux

  2. Cara Menghitung Jumlah Baris dalam File di Linux (Contoh Perintah wc dan nl)

  3. Bagaimana saya bisa membuat grep mencetak baris di bawah dan di atas setiap baris yang cocok?

  1. Cara menggunakan lookahead untuk mengecualikan karakter khusus dalam ekspresi reguler

  2. Bagaimana cara mengetik karakter khusus di Linux?

  3. bash:cara menyampaikan argumen baris perintah yang berisi karakter khusus

  1. Dengan Perintah "kucing" Linux, Bagaimana Hanya Menampilkan Baris Tertentu Dengan Angka?

  2. Bagaimana Cara Grep Garis Yang Tidak Dimulai Dengan "#" Atau ";"?

  3. Grep:hitung jumlah kecocokan per baris