Bagaimana cara grep untuk pipa |


14

Bagaimana saya bisa grep untuk baris yang mengandung karakter pipa |atau untuk karakter >:

files content:
|this is test
where is >
this is none

sekarang yang saya butuhkan menggunakan perintah grep adalah

grep -iE "<some expression>" file_name

Keluaran:

|this is test
where is >

Jawaban:


10

Dengan grepsintaks standar :

grep '[>|]'

atau

grep -e '>' -e '|'

atau

grep '>
|'

atau

grep -E '>|\|'

6

Jika Anda menggunakan GNU grep Anda dapat melakukan ini dengan operator atau ( |), yang harus diloloskan (didahului oleh garis miring terbalik \). Jadi untuk menemukan garis yang mengandung pipa atau tanda yang lebih besar, sertakan secara harfiah dengan operator atau :

grep '|\|>' infile

Keluaran:

|this is test
where is >

4
\|bukan BREoperator standar , meskipun bekerja dengan GNU grepyang grepditemukan di sebagian besar sistem Operasi yang dibangun di sekitar kernel Linux.
Stéphane Chazelas

@StephaneChazelas: terima kasih telah menunjukkan ini, saya tidak menyadarinya. Saya mengoreksi teks.
Thor

1
Ya, operator pergantian adalah satu-satunya tambahan nyata dari EREs atas BREs, sisanya ( +, ?) menjadi gula sintaksis untuk \{1,\}dan \{0,1\}. (di sisi lain, referensi lepas ERE ( \(.\)\1) yang hanya merupakan fitur BRE)
Stéphane Chazelas

1

Menggunakan ekspresi braket untuk mencocokkan salah satu karakter yang diinginkan:

grep "[|>]" infile

Keluaran:

|this is test
where is >

3
Tidak perlu -iatau di -Esini.
Stéphane Chazelas

Itu benar, diakui.
zagrimsan

0

Cara yang benar untuk mencapainya adalah menggunakan flag -e yang ditentukan oleh POSIX. Misalnya:

grep -e '>\||' infile

1
grep -e '>' -e '|' infilebekerja juga.
ott--

2
-editentukan oleh POSIX tetapi tidak berguna di sini. \|tidak ditentukan oleh POSIX.
Stéphane Chazelas
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.