比較2個檔案內容不同行的shell指令碼

2022-09-13 07:39:11 字數 1127 閱讀 5208

第一種:grep命令法

命令如下:grep -vxff file1 file2 > a.txt

其中file2是大檔案,file1是小檔案

第一種:comm命令法

命令如下:comm  file1 file2 -1 -3

file1和file2必須是有序檔案,所以在comm前可以先sort file1 , sort file2再比較

附: comm命令介紹(

comm命令可以用於兩個檔案之間的比較,它有一些選項可以用來調整輸出,以便執行交集、求差、以及差集操作。

交集:列印出兩個檔案所共有的行。

求差:列印出指定檔案所包含的且不相同的行。

差集:列印出包含在乙個檔案中,但不包含在其他指定檔案中的行。

[root@localhost cc]# cat file1ab

cd[root@localhost cc]# cat file2ab

f[root@localhost cc]# comm file1 file2 ab

cdf輸出的第一列只包含在檔案file1**現的行,第二列只包含在檔案file2**現的行,第三列包含在file和file2中相同的行。

交集

列印兩個檔案的交集,需要刪除第一列和第二列:

[root@localhost cc]# comm 1 2 -1 -2ab

求差

列印出兩個檔案中不相同的行,需要刪除第三列:

[root@localhost cc]# comm 1 2 -3 |sed 's/^\t//'cd

fsed 's/^\t//' 是將製表符(\t)刪除,以便把兩列合併成一列。

差集

通過刪除不需要的列,可以得到aaa.txt和bbb.txt的差集:

檔案1的差集

[root@localhost cc]# comm 1 2 -2 -3cd

檔案2的差集

[root@localhost cc]# comm 1 2 -1 -3

f

2個檔案內容的比較

檔案內容比較shell 如 a.txt 2111,12,222 b.txt 2121,12,222 shell bin bash touch result.txt echo 建立結果檔案成功!echo result.txt filename1 home zzq a.txt 拿到檔案的行數 filec...

處理兩個檔案中的相同行和不同行

利用現存兩個檔案,生成乙個新的檔案 1.如何取出兩個檔案的並集 重複的行只保留乙份 2.如何取出兩個檔案的交集 只留下同時存在於兩個檔案中的檔案 3.如何刪除交集,留下其他的行?1.cat file1 file2 sort uniq 2.cat file1 file2 sort uniq d 3.c...

利用shell比較兩個檔案內容的不同

兩個檔案a.txt和b.txt a.txt more a.txt 1122 3344 55 b.txt more b.txt 11122 7788 3399 如果執行diff a.txt b.txt diff w a.txt b.txt 1c1 11 111 2a3,4 77 88 4,5c6 44...