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.