Bagaimana cara menghapus semua karakter dalam satu baris setelah "]" dengan sed?

13

Bagaimana cara menghapus semua karakter dalam satu baris setelah "]" dengan sed?

Saya mencoba untuk mengambil beberapa file menggunakan cat, awk. Sekarang oneliner saya mengembalikan sesuatu seperti

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

Sekarang saya ingin menghapus semua setelah "]" karakter (dengan "]"). Saya hanya ingin 121.122.121.111di output saya.

Saya mencari-cari contoh sed yang khusus di Google, tetapi tidak menemukan bantuan dalam contoh itu.

B14D3
sumber

Jawaban:

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

Jadi jika Anda memiliki file yang penuh dengan garis-garis seperti itu dapat Anda lakukan

 sed 's/].*//' filename
Mike
sumber
12

Bagaimana kalau cutsebaliknya:

cat logfile | cut -d "]" -f1
Sven
sumber
3

Sesuatu seperti

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

harus melakukan apa yang Anda inginkan. The \(.*\)]akan menangkap semua teks hingga ]ke dalam pola diingat dan kemudian \1pengganti untuk seluruh baris.

user9517
sumber