Jak mogę grepować dla wiersza zawierającego znak potoku |
lub dla znaku >
:
files content:
|this is test
where is >
this is none
teraz potrzebuję polecenia grep
grep -iE "<some expression>" file_name
Wynik:
|this is test
where is >
Jak mogę grepować dla wiersza zawierającego znak potoku |
lub dla znaku >
:
files content:
|this is test
where is >
this is none
teraz potrzebuję polecenia grep
grep -iE "<some expression>" file_name
Wynik:
|this is test
where is >
Ze standardową grep
składnią:
grep '[>|]'
lub
grep -e '>' -e '|'
lub
grep '>
|'
lub
grep -E '>|\|'
Jeśli używasz GNU grep, możesz to zrobić za pomocą operatora lub ( |
), który powinien być poprzedzony znakiem ucieczki (poprzedzonym odwrotnym ukośnikiem \
). Aby znaleźć wiersze zawierające znak potoku lub znak większy niż, dołącz je dosłownie do operatora lub :
grep '|\|>' infile
Wynik:
|this is test
where is >
\|
nie jest standardowymBRE
operatorem, choć współpracuje z GNU,grep
którygrep
występuje w większości systemów operacyjnych zbudowanych wokół jądra Linux.+
,?
) to cukier syntaktyczny dla\{1,\}
i\{0,1\}
. (z drugiej strony, ERE tracą referencje (\(.\)\1
), które są funkcją tylko BRE)Używanie wyrażenia w nawiasach w celu dopasowania jednego z poszukiwanych znaków:
grep "[|>]" infile
Wynik:
źródło
-i
ani-E
tutaj.Prawidłowym sposobem na osiągnięcie tego jest użycie flagi -e określonej przez POSIX. Na przykład:
źródło
grep -e '>' -e '|' infile
też działa.-e
jest określony przez POSIX, ale tutaj nie jest użyteczny.\|
nie jest określony przez POSIX.