Với awk
:
awk 'NF{NF-=1};1' <in >out
hoặc là:
awk 'NF{NF--};1' <in >out
hoặc là:
awk 'NF{--NF};1' <in >out
Mặc dù điều này trông giống như voodoo, nó hoạt động. Có ba phần cho mỗi lệnh awk này.
Đầu tiên là NF
, điều kiện tiên quyết cho phần thứ hai. NF
là một biến chứa số lượng các trường trong một dòng. Trong AWK, mọi thứ đều đúng nếu chúng không phải là 0 hoặc chuỗi rỗng ""
. Do đó, phần thứ hai (nơi NF
bị giảm) chỉ xảy ra nếu NF
không bằng 0.
Phần thứ hai ( NF-=1
NF--
hoặc --NF
là) chỉ trừ một từ NF
biến. Điều này ngăn trường cuối cùng được in, bởi vì khi bạn thay đổi một trường (loại bỏ trường cuối cùng trong trường hợp này), hãy awk
xây dựng lại $0
, nối tất cả các trường được phân tách bằng dấu cách theo mặc định. $0
không chứa trường cuối cùng nữa.
Phần cuối cùng là 1
. Nó không phải là phép thuật, nó chỉ được sử dụng như một biểu thức có nghĩa true
. Nếu một awk
biểu thức ước tính là đúng mà không có bất kỳ hành động liên quan nào, thì awk
hành động mặc định là print $0
.