Tôi đang cố gắng tìm hiểu làm thế nào tôi có thể sử dụng AWK để trừ các dòng. Ví dụ, hãy tưởng tượng tệp đầu vào là:
30
20
Đầu ra sẽ là:
10
Bây giờ, như một thử nghiệm, tôi đang cố gắng tính toán cột bộ nhớ "Được sử dụng" từ:
$ cat /proc/meminfo
Vì vậy, tại thời điểm này tôi đã viết điều này:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
Tôi đã thử như sau:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
Nhưng điều này chỉ cho tôi hàng dữ liệu cuối cùng.
Tôi đã tìm thấy một giải pháp hiệu quả, nhưng tôi nghi ngờ đó là giải pháp tối ưu nhất. Tất cả kinh nghiệm mã hóa của tôi cho tôi biết rằng mã hóa cứng số lượng hàng là khủng khiếp: P
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk 'NR == 1{s=$0} NR == 2 {s=s-$0} END {print s}'
line1_$2 - line2_$2 - lineN-$2
? Bạn chỉ muốn trừ hai hàng đầu tiên liên tiếp?