2012-10-26 78 views
0

我有兩個文件,一個類似以下內容的內容進行排序:我怎麼能一個文件的內容,基於另一個文件

1.something344343 
2.something2dsdsf 
4.somethingdsddfsd 
5.something920j329 

和第二個文件是沿着線:那麼

1.somethingwoimewoiew 
3.something9jwe90jew 
7.something90kjwe90ewk 

在本質上,第一個文件還有更多個行第二個呢,第一個文件上升到共有39,000行,而第二個文件只上升至23000線。話雖如此,有誰知道我怎樣才能將第一個文件分成包含在文件2中的行號(編號冒號冒號)和未包含在文件2中的行(這將在bash環境中)。最終的結果將是沿着此線的東西:

lines included in second file: 
1.something344343 

lines not included in second file: 
2.something2dsdsf 
4.somethingdsddfsd 
5.something920j329 

我想過了,我可以用它來做到這一點不同的方法,但遺憾的是一直沒能拿出任何有效的解決方案是,如果任何人都可以幫忙,雖然我會很感激,謝謝!包括在第二個文件

+0

所以你只關注每條線開始的#,而不是後來發生的事情? (即如果文件1有'1.蘋果; 2.Bananas'和文件2有'1.Oranges; 3.Berries',你想把文件1分成'1.Apples'和'2.Bananas'? –

+0

@ sampson-chen 是的,我一直在處理文件一的內容,結果是文件2的內容,所以我試圖找到一種方法分開我到目前爲止處理的和我沒有的東西處理完畢。 – lacrosse1991

回答

5

線:

$ join -t"." -o 0,1.2 f1 f2 
1.something344343 

線不包括在第二個文件:

$ join -t"." -v1 f1 f2 
2.something2dsdsf 
4.somethingdsddfsd 
5.something920j329 
+0

完美無缺:)謝謝! – lacrosse1991

1

只能說明行號,而不是行內容:

$ diff --unchanged-group-format=$'Lines included in second file:\n%=' \ 
     --old-group-format=$'Lines not included in second file:\n%<' \ 
     --new-group-format='' \ 
     <(awk -F. '{print $1}' file1) <(awk -F. '{print $1}' file2) 
Lines included in second file: 
1 
Lines not included in second file: 
2 
4 
5 
相關問題