Dengan awk
:
awk 'NF{NF-=1};1' <in >out
atau:
awk 'NF{NF--};1' <in >out
atau:
awk 'NF{--NF};1' <in >out
Meskipun ini terlihat seperti voodoo, ia berfungsi. Ada tiga bagian untuk masing-masing perintah awk ini.
Yang pertama adalah NF
, yang merupakan prasyarat untuk bagian kedua. NF
adalah variabel yang berisi jumlah bidang dalam satu baris. Di AWK, semuanya benar jika bukan 0 atau string kosong ""
. Oleh karena itu, bagian kedua (di mana NF
dikurangi) hanya terjadi jika NF
tidak 0.
Bagian kedua (baik NF-=1
NF--
atau --NF
) hanya mengurangi satu dari NF
variabel. Ini mencegah bidang terakhir dari dicetak, karena ketika Anda mengubah bidang (menghapus bidang terakhir dalam kasus ini), awk
membangun kembali $0
, menggabungkan semua bidang yang dipisahkan oleh ruang secara default. $0
tidak mengandung bidang terakhir lagi.
Bagian terakhir adalah 1
. Itu tidak ajaib, hanya digunakan sebagai ungkapan yang berarti true
. Jika awk
ekspresi bernilai true tanpa tindakan yang terkait, awk
tindakan default adalah print $0
.