Eh bien, je dispose d'un fichier test.txtComment faire pour arrêter grep au premier match sur une ligne?
#test.txt odsdsdoddf112 test1_for_grep dad23392eeedJ test2 for grep Hello World test garbage
Je veux extraire les chaînes qui ont obtenu un espace après eux. Je l'expression suivante et cela a fonctionné
grep -o [[:alnum:]]*.[[:blank:]] test.txt
Sa sortie est
odsdsdoddf112 dad23392eeedJ test2 for Hello World
Mais le problème est imprime grep toutes les cordes qui ont obtenu l'espace après les, où que je le veux arrêter après le premier match sur une ligne et ensuite passer à la deuxième ligne.
Quelle expression dois-je utiliser ici, afin de le faire arrêter après la première correspondance et passer à la ligne suivante?
Ce problème peut être résolu avec gawk ou un autre outil, mais j'apprécierai une solution qui utilise uniquement grep.
Édition J'utilise GNU grep 2.5.1 sur un système Linux, si cela est pertinent.
Modifier
Avec l'aide des réponses ci-dessous, j'ai essayé ma chance avec
grep -o ^[[:alnum:]]* test.txt grep -Eo ^[[:alnum:]]+ test.txt
et les deux m'a donné les bonnes réponses.
Maintenant, ce qui me surprend est que j'ai essayé d'utiliser
grep -Eo "^[[:alnum:]]+[[:blank:]]" test.txt
comme suggéré here mais n'a pas obtenu la bonne réponse. Voici la sortie de mon terminal
odsdsdoddf112 dad23392eeedJ test2 for Hello World
Mais les commentaires de RichieHindle et Adrian Pronk, montre qu'ils ont obtenu une sortie correcte sur leurs systèmes. Quelqu'un avec une idée de ce pourquoi je ne reçois pas le même résultat sur mon système. Une idée? Toute aide serait appréciée.
Modifier
Eh bien, il semble que grep 2.5.1 a un bug à cause duquel ma sortie n'a pas été correcte. J'ai installé grep 2.5.4, maintenant il fonctionne correctement. S'il vous plaît voir this link pour plus de détails.
J'ai copié votre commande sur mon terminal mais j'ai obtenu exactement le même résultat. –
@ andrew-dufresne: Y a-t-il quelque chose d'étrange dans votre fichier texte? Essayez 'od -c test.txt' Est-ce que cela montre les caractères que vous attendiez? – RichieHindle
@RichieHindle: Merci pour vos réponses rapides, je l'apprécie vraiment. J'exécutant la commande et a obtenu les mêmes caractères que dans le test.txt –