ฉันจะแสดงความแตกต่างระหว่าง 2 ไฟล์ได้อย่างไร


11

ไฟล์ของฉันประกอบด้วยสิ่งต่อไปนี้; ประมาณ:

username:username:username:username:username 

บรรทัดด้านบนยังคงประมาณ 600 อักขระ

ฉันใช้awkคำสั่งเพื่อใช้เป็นอาร์กิวเมนต์ในคำขอ API / HTTP ที่ส่งจากบรรทัดคำสั่ง

ฉันกำลังใช้สคริปต์เพื่อรับรายการบัญชีผู้ใช้ 'ติดตาม' ฉันและทุก ๆ 24 ชั่วโมงหรือมากกว่านั้นเปรียบเทียบรายการต้นฉบับบนฮาร์ดดิสก์ของฉันกับรายการชื่อผู้ใช้ที่เพิ่งแสดงผลใหม่ (และแสดงว่าใครไม่ได้ติดตาม ฉัน . ฉันจะต้องสรุปตรรกะของฉันเป็นลูปโดยใช้ bash .. ทดสอบชื่อผู้ใช้แต่ละคน

สคริปต์ปัจจุบันของฉัน:

user=$(awk -F: '{ print $1 }' FILE)  # Grab $User to use as an argument.  
following=$(exec CURRENT_FOLLOWERS) # Outputs the new file

echo "X amount of users are following you on 78B066B87AF16A412556458AC85EFEF66155"  

          SAVE CURRENT FOLLOWERS TO NEW A FILE.  


if [[ DIFFERENCE IS DETECTED ]] ; then    

          echo -ne "$User NO LONGER FOLLOWING YOU\r"

   else echo -ne "This user is following you still.\r"
fi

คำถามของฉันคือ;
ฉันจะแสดงความแตกต่างระหว่าง 2 ไฟล์ได้อย่างไร


คุณรู้diffใช่มั้ย
schaiba

@schaiba ขอบคุณ เพิ่งเจอสิ่งนั้นในฟอรัมอื่นใช้งานได้ดี ฉันไม่ได้สะดุดกับมันมาก่อน ฉันหวังว่าคำตอบนี้มีประโยชน์สำหรับการค้นหาในอนาคตโดยสมาชิกคนอื่น ๆ
Ben

@schaiba อาจตอบคำถามด้วยเช่นกัน ตรวจสอบให้แน่ใจว่าได้จัดการกับ diff ที่ทำงานบนบรรทัดที่ไม่ใช่ฟิลด์
terdon

คำตอบ:


9

diffยูทิลิตี้ที่คุณกำลังมองหาอยู่ ดูรายละเอียดเพิ่มเติมในคู่มือ



13

ให้สองไฟล์ที่มีรายชื่อผู้ใช้ที่ไม่เรียงลำดับเช่น

In file1:
    userD
    user3
    userA
    user1
    userB

และ

In file2:
    user3
    userB
    userX
    user1

จากนั้นเพื่อรับรายการผู้ใช้อย่างง่ายfile1แต่ไม่file2สามารถทำได้คุณสามารถทำได้

$ comm -23 <(sort file1) <(sort file2)
userA
userD

และในทำนองเดียวกันเพื่อให้ผู้ใช้เข้าfile2แต่ไม่ใช่file1

$ comm -13 <(sort file1) <(sort file2)
userX

หากไฟล์รายการเรียงแล้วไฟล์เหล่านี้สามารถถูกทำให้ง่ายขึ้นcomm -23 file1 file2และcomm -13 file1 file2ตามลำดับ


1
เป็นไปได้ไหมที่จะใช้commโดยไม่มีการเรียงลำดับ? แฟ้มข้อความของฉันมีค่าชอบ1, 2, 01, 02, 0000, 0001, 0002ฯลฯ ใช้sortจะยกเลิกการจัดเรียงลำดับที่ ...
ด้านระบบ

6

คำสั่งที่ดีที่สุดเพื่อดูความแตกต่างในเนื้อหาของไฟล์จะเป็น

vim -d file1 file2

3

diff [options] from-file to-file

diffเปรียบเทียบเนื้อหาของไฟล์ทั้งสองจากไฟล์และไฟล์คุณสามารถระบุ-iตัวเลือกที่ละเว้นการเปลี่ยนแปลงในกรณี พิจารณาตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กที่เทียบเท่ากัน

สำหรับข้อมูลเพิ่มเติมคุณสามารถดูลิงค์นี้: http://www.computerhope.com/unix/udiff.htmหรือดูที่หน้าคู่มือ


2

คุณสามารถลองหน้าต่างเดียวกันเช่นfcคำสั่งใน Unix และ Linux เช่นdiff <file_new> <file_old>คำสั่ง

บรรทัดที่มี+++หรือ---ด้านหน้าของพวกเขามีการเปลี่ยนแปลงและเป็นหนึ่งเดียวกับไม่มี+'sและ-'sไม่ได้เปลี่ยน

บรรทัดที่มี-เครื่องหมายจะถูกลบออกจากไฟล์ใหม่อย่างไรก็ตามมีอยู่ในเวอร์ชันเก่า

+มีการเพิ่มบรรทัดที่มีเครื่องหมายในไฟล์ใหม่ แต่ไม่มีอยู่ในไฟล์เวอร์ชันเก่า

สัญกรณ์ Linux

Linux ใช้> และ<

>หมายถึงบรรทัดจากไฟล์เก่า <หมายถึงบรรทัดจากไฟล์ใหม่ที่มีการเปลี่ยนแปลงในไฟล์เก่า


0

ใช้vimdiffเพื่อแสดงความแตกต่างระหว่างไฟล์เดียวกันสองสามหรือสี่เวอร์ชั่น

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