ฉันพยายามหาวิธีที่ฉันสามารถใช้AWKเพื่อลบบรรทัด ตัวอย่างเช่นสมมติว่าไฟล์อินพุตคือ:
30
20
ผลลัพธ์จะเป็น:
10
ตอนนี้เป็นการทดสอบฉันพยายามคำนวณคอลัมน์หน่วยความจำ "ใช้แล้ว" จาก:
$ cat /proc/meminfo
ดังนั้นในขณะนี้ฉันได้เขียนสิ่งนี้:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
แต่นี่เป็นเพียงแถวสุดท้ายของข้อมูล
ฉันพบวิธีแก้ไขปัญหาการทำงาน แต่ฉันสงสัยว่าเป็นวิธีที่ดีที่สุด ประสบการณ์การเขียนโค้ดทั้งหมดของฉันบอกฉันว่าการเข้ารหัสฮาร์ดจำนวนแถวนั้นแย่มาก: 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
อย่างไร คุณต้องการที่จะลบสองแถวแรกติดกันหรือไม่