2015-10-06 52 views
0

兩個文件我有一個類似如下的文件:我如何可以追加在bash

File 1 
------ 
Field A, Field B, Field C 
1,2,3 

aa,bb,cc 

File 2 
------ 
Field D, Field E, Field F 
4,5,6 

dd,ee,ff 

I want to join them so the file looks like the following: 

Joined File 
----------- 
Field A, Field B, Field C, Field D, Field E, Field F 
1,2,3,4,5,6 

aa,bb,cc,dd,ee,ff 

所以它應該只是跳過空白行並追加其他一切行用逗號它作序。我這樣做,所以我可以在CSV文件中生成「列」並維護標題。空白行將始終匹配,所以我不需要邏輯來檢查該方面。

回答

0

此: paste -d, "file 1" "file 2" | sed -e 's/^,$//g;s/^,/,,,/g'

會給:

 
Field A, Field B, Field C,Field D, Field E, Field F 
1,2,3,4,5,6 

aa,bb,cc,dd,ee,ff 
,,,o1,o2,o3 

此: paste -d, "file 1" "file 2" | sed -e 's/^,/,,,/g;s/,$/,,,/g'

會給:

 
Field A, Field B, Field C,Field D, Field E, Field F 
1,2,3,4,5,6 
,,,,, 
aa,bb,cc,dd,ee,ff 
,,,o1,o2,o3 

此: paste -d, "file 1" "file 2" | sed 's/^,$//g'

會給:

 
Field A, Field B, Field C,Field D, Field E, Field F 
1,2,3,4,5,6 

aa,bb,cc,dd,ee,ff 
,o1,o2,o3 
+1

如果一個文件有一個空行和其他有幾個領域這是行不通的。那麼它只會輸出一個逗號,這會拋出輸出。 – user3299633

+0

這個問題說:「空行總是匹配,所以我不需要邏輯來檢查這個方面。」,所以我不知道你在說什麼。如果行數不匹配,你想要「,,, d,e,f」嗎? – Jrican

+0

我的意思是說,如果文件1中有一個空白行,則文件2中會有一個相應的空白文件,但不一定是相反的。 – user3299633