comm
Linux Command – comm ใช้ในวิเคราะห์เปรียบเทียบข้อมูล file 2 file ที่ทำการจัดเรียงลำดับแล้ว (sort) เทียบกันทีละบรรทัด
คำสั่ง
ตัวอย่างมี file text 2 file เราต้องทำการ sort ข้อมูลก่อนทุกครั้งที่จะใช้งาน comm ซึ่งถ้าเราลืม sort จะทำให้ผลลัพธ์ที่ได้ผิดไป
$ cat file1 aaaaaaaaaaa bbbbbbbbbbb ccccccccccc ddddddddddd eeeeeeeeeee fffffffffff ggggggggggg $ cat file2 aaaaaaaaaaa 22222222222 ccccccccccc zzzzzzzzzzz xxxxxxxxxxx 33333333333 ddddddddddd $ cat file1 |sort > file1.sort $ cat file2 |sort > file2.sort $ cat file1.sort aaaaaaaaaaa bbbbbbbbbbb ccccccccccc ddddddddddd eeeeeeeeeee fffffffffff ggggggggggg $ cat file2.sort 22222222222 33333333333 aaaaaaaaaaa ccccccccccc ddddddddddd xxxxxxxxxxx zzzzzzzzzzz
1. เปรียบเทียบ file ทั้ง 2 file
comm <file1> <file2>
ผลลัพธ์ที่ได้คือ column แรกบรรทัดที่ file1 มีแต่ file2 ไม่มี ส่วน column สอง คือ file2 มีแต่ file1 ไม่มี และ column สุดท้ายคือบรรทัดที่มีเหมือนกันทั้ง 2 file
comm file1.sort file2.sort 22222222222 33333333333 aaaaaaaaaaa bbbbbbbbbbb ccccccccccc ddddddddddd eeeeeeeeeee fffffffffff ggggggggggg xxxxxxxxxxx zzzzzzzzzzz
2. ปิดการแสดงผลที่ไม่ต้องการ
comm <-1,2,3> <file1> <file2>
เราสามารถปิดการแสดงผลบาง field หรือ column ที่เราไม่ได้สนใจได้ เช่น เราต้องการเปรียบเทียบบรรทัดของ file1 ว่ามี บรรทัดไหนบ้างที่ซ้ำกับ file2 เราก็สามารถปิด column1 และ 2 ได้ด้วย option -12
$ comm -1 file1.sort file2.sort 22222222222 33333333333 aaaaaaaaaaa ccccccccccc ddddddddddd xxxxxxxxxxx zzzzzzzzzzz $ comm -2 file1.sort file2.sort aaaaaaaaaaa bbbbbbbbbbb ccccccccccc ddddddddddd eeeeeeeeeee fffffffffff ggggggggggg $ comm -3 file1.sort file2.sort 22222222222 33333333333 bbbbbbbbbbb eeeeeeeeeee fffffffffff ggggggggggg xxxxxxxxxxx zzzzzzzzzzz $ comm -12 file1.sort file2.sort aaaaaaaaaaa ccccccccccc ddddddddddd
โครงสร้างคำสั่ง
comm [OPTION]... FILE1 FILE2
รายละเอียด
คำสั่งที่ใช้ในวิเคราะห์เปรียบเทียบข้อมูล file 2 file ที่ทำการจัดเรียงลำดับแล้ว (sort) เทียบกันทีละบรรทัด สามารถเปรียบเทียบออกมาได้ 3 field คือ
- file แรกมีข้อมูล แต่ file สองไม่มี
- file แรกไม่มีข้อมูล แต่ file สองมีข้อมูล
- มีข้อมูลทั้ง 2 file
*** ย้ำว่าต้องทำการ sort ข้อมูลใน file ก่อนทุกครั้ง
Option
-1 suppress column 1 (lines unique to FILE1) -2 suppress column 2 (lines unique to FILE2) -3 suppress column 3 (lines that appear in both files) --check-order check that the input is correctly sorted, even if all input lines are pairable --nocheck-order do not check that the input is correctly sorted --output-delimiter=STR separate columns with STR -z, --zero-terminated line delimiter is NUL, not newline --help display this help and exit --version output version information and exit Note, comparisons honor the rules specified by 'LC_COLLATE'.
กลุ่มคำสั่ง
join(1), uniq(1)
Reference:
Author: Suphakit Annoppornchai
Credit: https://saixiii.com
[…] crontab(5), cron(8) […]
[…] comm(1), cmp(1), sdiff(1), […]
[…] comm(1), join(1), sort(1) […]