簡體   English   中英

Linux:比較兩個文件但不關心僅一行內容

[英]Linux: Comparing two files but not caring what line only content

我正在嘗試使用comm或diff Linux命令來比較不同的文件。 每個文件都有一個卷名列表。 文件A具有1500個卷,文件B具有相同的1500個卷,外加200個,共1700個卷。我正在尋找僅能找到這200個卷的地方。 我不在乎卷是否匹配並且在不同的行上,我只希望不匹配的卷,但是diff和comm命令似乎只逐行比較。 有誰知道另一個命令或使用comm或diff命令查找這200個卷的方法?

兩個文件的前5行:(順便說一句,每行只有一個卷,因此文件A有1500行,文件B有1700行)

檔案A:

B00004
B00007
B00010
B00011
B00013

檔案B:

B00003   
B00004   
B00007    
B00008    
B00010 

因此,我希望命令僅從前5行向我顯示B00003和B00008,因為這些卷不在文件A中

嘗試

comm -23 <( sort largerFile) <(sort smallerFile) 

假設您的Vol名稱將是數據中的第一個“字段”。 如果不是,請檢查man sort ,以找到在備用字段(和字段組合)上對文件進行man sort的方法。

<( ....)構造稱為過程替換。 如果您使用的是非常老的shell / unix或功能簡化的shell(破折號?),則可能無法使用進程替換。 然后,您必須先對文件排序,然后再運行comm並管理對未排序文件的操作。

請注意,由於comm -23表示“禁止來自第二個文件的輸出”( 2 )和“禁止兩個共同的文件的輸出”( -3 ),因此其余輸出是在file1中找到的差異,而在file2中則沒有。 這就是為什么我首先列出largerFile原因。

高溫超導

awk也可以提供幫助。

 awk  'NR==FNR {a[$1]=$1; next}!($1 in a) {print $0}' fileA fileB

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM