web-dev-qa-db-fra.com

Comment supprimer tous les caractères sur une ligne après "]" avec sed?

Comment supprimer tous les caractères sur une ligne après "]" avec sed?

Im essayant de grep un fichier en utilisant cat, awk. Maintenant, mon oneliner me renvoie quelque chose comme

121.122.121.111] other characters in logs from sendmail.... :)

Maintenant, je veux tout supprimer après le caractère "]" (avec "]"). Je veux seulement 121.122.121.111 dans ma sortie.

Je cherchais cet exemple particulier de sed, mais je n'ai trouvé aucune aide dans ces exemples.

13
B14D3
 echo "121.122.121.111] other characters in logs from sendmail...." | sed 's/].*//' 

Donc, si vous avez un fichier plein de lignes comme ça, vous pouvez le faire

 sed 's/].*//' filename
21
Mike

Que diriez-vous de cut à la place:

cat logfile | cut -d "]" -f1
12
Sven

Quelque chose comme

sed 's|\(.*\)\] .*$|\1|'

devrait faire ce que vous voulez. La \(.*\)] capturera tout le texte jusqu'au ] Dans un modèle mémorisé, puis le \1 Le remplacera pour toute la ligne.

3
user9517