Saya memiliki logfile dengan cap waktu di dalamnya. Kadang-kadang ada beberapa cap waktu dalam satu baris. Sekarang saya ingin menghapus semua cap waktu dari satu baris tetapi tetap yang pertama.
Saya bisa melakukan s/pattern//2
tetapi itu hanya menghilangkan kejadian kedua dan sed
tidak mengizinkan sesuatu seperti s/pattern//2-
.
Ada saran?
Jawaban:
Dengan GNU
sed
:Yang
2
menentukan bahwa pola kedua dan semua yang laing
harus dihapus. Jadi ini akan menjadi yang pertama.sumber
Ini harus bekerja (ganti _ dengan yang lain jika berbenturan dengan log Anda):
sumber
\n
.atau tanpa sed goto:
Solusi umum untuk menghapus dari posisi ke-3 (misalnya) adalah:
sumber
Sedikit variasi pada jawaban @ jillagre (dimodifikasi untuk ketahanan) dapat terlihat seperti:
... tetapi dalam beberapa
sed
s Anda mungkin perlu menggantin
di sisi kanans///
pernyataan ubstitusi pertama dengan\n
karakter ewline literal .sumber