Boru için grep nasıl |


14

Boru karakteri içeren satır |veya karakter için nasıl grep olabilirim >:

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

şimdi grep komutunu kullanarak neye ihtiyacım var

grep -iE "<some expression>" file_name

Çıktı:

|this is test
where is >

Yanıtlar:


10

Standart grepsözdizimi ile:

grep '[>|]'

veya

grep -e '>' -e '|'

veya

grep '>
|'

veya

grep -E '>|\|'

6

GNU grep kullanıyorsanız bunu kaçması gereken (ters eğik çizgi ile başlayan ) veya operatörü ( |) ile yapabilirsiniz \. Dolayısıyla, boru veya daha büyük işaret içeren satırları bulmak için, bunları veya operatörü ile tam anlamıyla dahil edin :

grep '|\|>' infile

Çıktı:

|this is test
where is >

4
\|Bir standart değil BREo GNU ile çalışıyor olsa operatörü grepolan grepLinux çekirdeği etrafında inşa çoğu çalışan sistemlerde bulunan.
Stéphane Chazelas

@StephaneChazelas: Bunu işaret ettiğiniz için teşekkür ederim, farkında değildim. Metni düzelttim.
Thor

1
Evet, münavebe operatör BRES üzerinde Eres tek gerçek eklenmesi, gerisi (olduğu +, ?için sözdizimsel şeker olmak üzere) \{1,\}ve \{0,1\}. (Öte yandan, ERE'ler \(.\)\1sadece BRE özelliği olan referansları geri alırlar )
Stéphane Chazelas

1

İstenen karakterlerden biriyle eşleştirmek için köşeli ayraç ifadesini kullanma:

grep "[|>]" infile

Çıktı:

|this is test
where is >

3
Gerek için ya -iya -Eburada.
Stéphane Chazelas

Bu doğru, kabul edildi.
zagrimsan

0

Bunu yapmanın doğru yolu POSIX tarafından belirtilen -e bayrağını kullanmaktır. Örneğin:

grep -e '>\||' infile

1
grep -e '>' -e '|' infileçalışır.
ott--

2
-ePOSIX tarafından belirtilir, ancak burada yararlı değildir. \|POSIX tarafından belirtilmedi.
Stéphane Chazelas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.