Katakanlah saya memiliki file yang berisi dua baris berikut:
2014-05-05 09:11:53 /aa/bbbb/cccccc 29899
2014-05-05 09:12:17 /aa/bbbb/cccccc?dddddddd 16767
Saya perlu mendapatkan baris yang berisi pola /aa/bbbb/cccccc
saja, saya tidak perlu baris kedua yang mengandung karakter tambahan yaitu ?dddddddd
. Sekarang ketika saya mencoba
grep '/aa/bbbb/cccccc' file
Kemudian kedua garis dipilih. Saya perlu garis penuh sehingga grep -o
tidak bisa menjadi solusi.
Apa yang bisa menjadi solusi yang mungkin menggunakan grep sehingga hanya baris pertama yang dipilih berdasarkan pola pencarian?
sumber
grep '/aa/bbbb/cccccc ' file
/aa/bbbb/cccccc
string.grep -E '/aa/bbbb/cccccc(\s+|$)' file
grep -E '(^|\s)/aa/bbbb/cccccc(\s|$)' file
Cara paling sederhana adalah menambahkan spasi setelah pola Anda:
Atau, untuk mencocokkan semua jenis spasi putih:
Atau
Atau, dengan tampilan positif :
Atau, dengan tampilan negatif :
Atau Anda dapat membalikkan pertandingan:
Atau, untuk juga mencocokkan garis yang tidak mengandung apa pun kecuali pola Anda (tanpa spasi spasi tambahan):
Atau, Anda bisa menggunakan skrip kecil:
Dalam awk:
Atau, jika Anda tidak tahu di bidang mana pola Anda berada
Dalam Perl
sumber
grep -v 'c?' file
mengapa Anda tidak menggunakangrep -v '?' file
karena file hanya memiliki dua baris di dalamnya.grep -v '?'
sudah cukup.Untuk melengkapi @AvinashRaj 's jawaban , Anda juga dapat menggunakan perintah seperti ini.
sumber