เปรียบเทียบส่วนหัวของสองไฟล์ใน bash


11

ฉันสามารถทำได้diff filea filebเพื่อดูความแตกต่างระหว่างไฟล์ ฉันสามารถทำได้head -1 fileaเพื่อดูบรรทัดแรกของ filea หรือ fileb ฉันจะรวมคำสั่งเหล่านี้เพื่อแสดงความแตกต่างระหว่างบรรทัดแรกของ filea และบรรทัดแรกของ fileb ได้อย่างไร

คำตอบ:



6

หากคุณเปรียบเทียบบรรทัดแรกของแต่ละไฟล์คุณอาจสนใจเกี่ยวกับการเปลี่ยนแปลงระดับคำภายในบรรทัดโดยใช้dwdiff:

dwdiff <(head -n 1 filea) <(head -n 1 fileb)

dwdiffมีตัวเลือกที่ดีบางอย่างชอบ-cเปลี่ยนสีคำที่มีสี

หรือใช้sedแทนหัว:

dwdiff <(sed 1q filea) <(sed 1q fileb)

ซึ่งคู่มือสำหรับ headนั้นสามารถพกพาได้ง่ายกว่า head เนื่องจากไวยากรณ์ของ head นั้นเปลี่ยนแปลงไปตามกาลเวลาhead -1vshead -n 1

นอกจากนี้คุณยังสามารถเปลี่ยนการมองเห็นได้โดยพิมพ์น้อยลง:

head -n1 -q filea fileb

ซึ่งจะแสดงทั้งสองบรรทัดหนึ่งบรรทัดด้านล่างเพื่อการเปรียบเทียบภาพที่ง่าย


0

คุณสามารถใช้ได้:

if [ "`head -1 file1`" == "`head -1 file2`" ]; then echo "the same"; fi

2
โปรดทราบว่ามันจะตอบว่า "เหมือนกัน" ถ้า file1 เป็นไฟล์ว่างเปล่า (หรือไม่สามารถอ่านได้) และบรรทัดแรกของ file2 นั้นว่างเปล่า
Stéphane Chazelas

ผมไม่ได้พูดว่าวิธีการนี้คือ 'หลักฐานงี่เง่า' แต่ถ้าคุณได้อย่างรวดเร็วต้องการเพื่อให้ตรงกับบรรทัดแรกของแฟ้มที่สอง ...
แลมเบิร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.