Jak usunąć wszystkie znaki w jednym wierszu po „]” za pomocą sed?

13

Jak usunąć wszystkie znaki w jednym wierszu po „]” za pomocą sed?

Próbuję grep jakiś plik za pomocą cat, awk. Teraz mój oneliner zwraca mi coś takiego

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

Teraz chcę usunąć wszystko po znaku „]” (za pomocą „]”). Chcę tylko 121.122.121.111w mojej produkcji.

Googlowałem po tym konkretnym przykładzie sed, ale nie znalazłem żadnej pomocy w tych przykładach.

B14D3
źródło

Odpowiedzi:

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

Więc jeśli masz taki plik pełen linii, możesz to zrobić

 sed 's/].*//' filename
Mikrofon
źródło
12

A może cutzamiast tego:

cat logfile | cut -d "]" -f1
Sven
źródło
3

Coś jak

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

powinien robić co chcesz. \(.*\)]Będzie przechwytywać cały tekst aż do ]do zapamiętanego wzorca, a następnie \1substytutów go na całej linii.

użytkownik9517
źródło