Comment grep pour pipe |


14

Comment est-ce que je peux grep pour la ligne contenant le caractère pipe |ou pour le caractère >:

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

maintenant ce dont j'ai besoin en utilisant la commande grep est

grep -iE "<some expression>" file_name

Production:

|this is test
where is >

Réponses:


10

Avec une grepsyntaxe standard :

grep '[>|]'

ou

grep -e '>' -e '|'

ou

grep '>
|'

ou

grep -E '>|\|'

6

Si vous utilisez GNU grep, vous pouvez le faire avec l' opérateur or ( |), qui doit être échappé (précédé d'une barre oblique inverse \). Donc, pour trouver des lignes contenant un tuyau ou un signe supérieur à, incluez-les littéralement avec l' opérateur or :

grep '|\|>' infile

Production:

|this is test
where is >

4
\|n'est pas un BREopérateur standard , bien qu'il fonctionne avec le GNU grepqui se greptrouve dans la plupart des systèmes d'exploitation construits autour d'un noyau Linux.
Stéphane Chazelas

@StephaneChazelas: merci de l'avoir signalé, je n'étais pas au courant. J'ai corrigé le texte.
Thor

1
Oui, l'opérateur d'alternance est le seul véritable ajout d'ERE sur les BRE, le reste ( +, ?) étant le sucre syntaxique pour \{1,\}et \{0,1\}. (d'un autre côté, les ERE perdent les références arrières ( \(.\)\1) qui ne sont qu'une fonctionnalité BRE)
Stéphane Chazelas

1

Utilisation d'une expression entre crochets pour faire correspondre l'un des caractères souhaités:

grep "[|>]" infile

Production:

|this is test
where is >

3
Pas besoin non plus -ini -Eici.
Stéphane Chazelas

C'est vrai, reconnu.
zagrimsan

0

La façon correcte de le faire est d'utiliser l'indicateur -e qui est spécifié par POSIX. Par exemple:

grep -e '>\||' infile

1
grep -e '>' -e '|' infilefonctionne aussi.
ott--

2
-eest spécifié par POSIX mais n'est pas utile ici. \|n'est pas spécifié par POSIX.
Stéphane Chazelas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.