2012-10-23 10 views
0

Essayer de comprendre comment écrire une commande sur plusieurs lignes, car le vrai est moyen de long pour une invite (4200 caractères), donc j'ai essayé cet exemple:grep sur plusieurs lignes (non multiligne grep)

fait un fichier de test contenant les 3 lignes suivantes:

some thing
some
thing

Quand je fais grep:
grep "some thing" test

-je obtenir le résultat attendu de:
some thing

Mais quand je fais grep:
grep "some \
thing" test

-je obtenir le résultat inattendu de:
some thing
thing

Presque comme si il a couru le grep deux fois, une fois pour "certains" et une fois pour "chose". Y at-il un moyen d'utiliser correctement le \ pour combiner les 2 à l'endroit où le résultat est comme le premier grep?

+1

Il suffit de relire ce ... quel est votre résultat attendu? – Steve

+0

@steve Je voudrais être le même comme un doublure (donc le premier exemple, seulement «quelque chose» retourné). – Hershizer33

Répondre

0

il ressemble ce fait il:
grep "some \
|thing" test.txt

produites: some thing

Identique: grep "some thing" test.txt

3

Au lieu de grep, vous devez utiliser pcregrep, alors vous serez en mesure d'utiliser de nouvelles lignes en modèle par option -M.

Dans votre exemple, ce sera comme:

pcregrep -M 'some\nthing' test 
+0

+ cool! Avec -z -o vous pouvez aussi faire grep (voir ci-dessous). – JJoao

1

En utilisant -zPo, vous pouvez faire en sorte que grep se comporte de manière multilingue:

grep -zPo 'some\nthing' test