[英]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.