Saya memiliki file yang terus-menerus ditulis / diperbarui. Saya ingin menemukan baris terakhir yang mengandung kata tertentu, lalu mencetak kolom terakhir dari baris itu.
File terlihat seperti ini. Lebih banyak garis A1 / B1 / C1 akan ditambahkan ke sana seiring waktu.
A1 123 456
B1 234 567
C1 345 678
A1 098 766
B1 987 6545
C1 876 5434
Saya mencoba menggunakan
tail -f file | grep A1 | awk '{print $NF}'
untuk mencetak nilai 766, tetapi tidak ada output.
Apakah ada cara untuk melakukan ini?
tail
berikan kepada Anda. Kecuali Anda tahu itu akan muncul dengan frekuensi tertentu, itu akan lebih amanawk '/A1/ {print $NF}' file | tail -n1
.Untuk mencetak kolom terakhir dari sebuah baris cukup gunakan $ (NF):
sumber
Salah satu cara menggunakan
awk
:sumber
awk
sintaksis samar :)Anda dapat melakukan ini tanpa awk hanya dengan beberapa pipa.
sumber
mungkin ini berhasil?
sumber
Anda dapat melakukan semuanya di
awk
:sumber
Menggunakan Perl
sumber
perl -lane 'print $F[2] if /A1/' rayne.txt
awk -F " " '($1=="A1") {print $NF}' FILE | tail -n 1
Gunakan
awk
dengan pemisah bidang -F set ke spasi "".Gunakan pola
$1=="A1"
dan tindakan{print $NF}
, ini akan mencetak bidang terakhir di setiap catatan di mana bidang pertama adalah "A1". Pipa hasilnya menjadi ekor dan gunakan-n 1
opsi untuk hanya menampilkan baris terakhir.sumber
Jalankan ini pada file:
dan Anda akan mendapatkan apa yang Anda cari.
sumber
Bukan masalah aktual di sini, tapi mungkin bisa membantu seseorang: Saya lakukan
awk "{print $NF}"
, perhatikan kutipan yang salah. Seharusnyaawk '{print $NF}'
, agar shell tidak mengembang$NF
.sumber
ls -l | awk '{print $9}' | tail -n1
sumber