使用shell将一行/一行从一列转移到另一行

时间:2012-12-27 08:02:59

标签: shell unix

我想使用unix命令将txt文件中的一列数据转换为csv文件的一行。

示例:

ApplChk1,
ApplChk2,
v_baseLoanAmountTI,
v_plannedClosingDateField,
downPaymentTI,

这是一个存在于txt文件中的列

我希望在csv文件中输出如下

ApplChk1,ApplChk2,v_baseLoanAmountTI,v_plannedClosingDateField,downPaymentTI,

请让我知道怎么做。

提前致谢

4 个答案:

答案 0 :(得分: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

请告知我们,对于多行情况,输入的外观如何。

答案 1 :(得分:2)

一个有趣的 bash解决方案(bash≥4.1):

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

完成!

答案 2 :(得分: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

当我运行它时,会发生这种情况:

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

答案 3 :(得分:0)

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

以上将输出到stdout。 如果你想这样做:

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