การใช้ GNU awk
ซึ่งรองรับlength(array)
คุณสมบัติเฉพาะ(และawk
การใช้งานบางอย่างซึ่งอาจรองรับ) และไม่จำเป็นหากไฟล์ถูกเรียงลำดับ
gawk 'FNR==NR{seen[$0];next} ($0 in seen){delete seen[$0]};
END{print (!length(seen))?"Matched":"Not Matched"}' file2 file1
นี้คือการอ่านfile2ลงในอาร์เรย์ที่เรียกว่าseen
มีคีย์เป็นสายทั้งหมดของfile2
จากนั้นอ่านfile1และสำหรับแต่ละบรรทัดหากจับคู่กับบรรทัดในอาร์เรย์ที่เห็นแล้วลบคีย์นั้น
ในตอนท้ายถ้าอาร์เรย์ว่างเปล่าหมายความว่ามีบรรทัดทั้งหมดในfile2อยู่ในfile1และจะพิมพ์Matched
มิฉะนั้นจะNot Matched
ปรากฏขึ้น
เพื่อความเข้ากันได้ในทุกawk
การใช้งาน
awk 'FNR==NR{seen[$0];next} ($0 in seen){delete seen[$0]};
END{for(x in seen);print (!x)?"Matched":"Not Matched"}' file2 file1
การละเว้นบรรทัดว่าง / หรือเส้นที่มีช่องว่าง แต่ถ้าในfile2คุณจะต้องเพิ่มNF
เงื่อนไขในการNR==FNR && NF {...
ที่จะข้ามไปอ่านพวกเขาลงในอาร์เรย์
file2
มี 2 บรรทัดA
คุณต้องfile1
มีอย่างน้อย 2 บรรทัดA
หรือไม่