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. NFlà 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 NFbị giảm) chỉ xảy ra nếu NFkhông bằng 0.
Phần thứ hai ( NF-=1 NF--hoặc --NFlà) chỉ trừ một từ NFbiế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 awkxâ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. $0khô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 awkbiểu thức ước tính là đúng mà không có bất kỳ hành động liên quan nào, thì awkhành động mặc định là print $0.