2012-12-27 15 views
3

我想要使用unix命令將txt文件中的一列數據轉換爲csv文件的一行。使用shell將列中的每行轉換爲行

例如:

ApplChk1, 
ApplChk2, 
v_baseLoanAmountTI, 
v_plannedClosingDateField, 
downPaymentTI, 

這是出現在一個txt文件

我想輸出列作爲一個CSV文件如下

ApplChk1,ApplChk2,v_baseLoanAmountTI,v_plannedClosingDateField,downPaymentTI, 

請讓我知道該怎麼做它。

在此先感謝

回答

3

如果這是一列,要轉換成排,然後有很多可能性:

tr -d '\n' < filename ; echo # option 1 OR 
xargs echo -n < filename ; echo # option 2 (This option however, will shrink spaces & eat quotes) OR 
while read x; do echo -n "$x" ; done < filename; echo # option 3 

請讓我們知道,輸入會是什麼樣子,適用於多線情況。

+0

它不起作用 – lakshmi

+1

它是如何工作的?你得到的是什麼輸出而不是預期的輸出? –

+0

我得到了一個類似-bash的錯誤:語法錯誤附近有意想不到的標記'do' – lakshmi

1
for i in `< file.txt` ; do echo -n $i; done; echo "" 

使輸出

ApplChk1,ApplChk2,v_baseLoanAmountTI,v_plannedClosingDateField,downPaymentTI, 

要發送輸出到文件:

{ for i in `< file.txt` ; do echo -n $i ; done; echo; } > out.csv 

當我運行它,這是發生了什麼:

[[email protected]:tmp]$ more file.txt 
ApplChk1, 
ApplChk2, 
v_baseLoanAmountTI, 
v_plannedClosingDateField, 
downPaymentTI, 
[[email protected]:tmp]$ { for i in `< file.txt` ; do echo -n $i ; done; echo; } > out.csv 
[[email protected]:tmp]$ more out.csv 
ApplChk1,ApplChk2,v_baseLoanAmountTI,v_plannedClosingDateField,downPaymentTI, 
+0

如何將輸出發送到您使用的命令的csv文件 – lakshmi

+0

我已經使用該信息編輯了答案。 –

+0

它不起作用代碼給出的文本輸出與txt文件中的文本相同 – lakshmi

0
perl -pe 's/\n//g' your_file 

以上將輸出到stdout。 如果你想要做的很到位:

perl -pi -e 's/\n//g' your_file 
+0

如何看到上述命令的輸出 – lakshmi

2

一個有趣的慶典溶液(bash的≥ 4.1):

mapfile -t < file.txt; printf '%s' "${MAPFILE[@]}" $'\n' 

完成!