Apakah ada perintah cut untuk memotong berdasarkan kata misalnya:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27
Saya ingin output sebagai:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
Bagaimana cara mendekati?
Jawaban:
Saya menyarankan:
Keluaran:
FS
berisi pembatas Anda "ABCD". "ABCD" adalah regex.sumber
awk
dapat melakukan pekerjaan jika Anda memberikan-F
bendera dengan kata yang ingin Anda gunakan:Dalam kasus khusus Anda, itu akan menjadi:
Menilai dari contoh Anda, Anda hanya mencoba mencetak barang-barang hingga
ABCD
menghapus semuanya setelah itu juga merupakan pilihan:sumber
awk '{print gensub(/(.*ABCD\.).*/,"\\1",1)}'
.sed
Versi: kapan:Sumber: /unix/257514/how-to-delete-everything-after-a-certain-pattern-or-a-string-in-a-file
sumber
grep
larutan:Ekspresi reguler akan cocok dengan setiap baris yang dimulai
^
dengan karakter apa pun yang.
diulang beberapa kali*
dan berakhir dengan string.ABCD.
Garis miring terbalik\
lolos makna khusus dari titik.
di akhir.Opsi ini
-o
akan memberi tahugrep
perintah untuk mencetak hanya bagian yang cocok (tidak kosong) dari garis yang cocok.sumber
cut
itu sendiri dapat melakukan pekerjaan ini. Bukan berdasarkan kata, tetapi berdasarkan.
pembatas.Gunakan:
Keluaran
xargs
digunakan di sini hanya untuk menambahkan.
pada akhir stringABCD
.sumber