3

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

例子:

ApplChk1,
ApplChk2,
v_baseLoanAmountTI,
v_plannedClosingDateField,
downPaymentTI,

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

我想在 csv 文件中输出如下

ApplChk1,ApplChk2,v_baseLoanAmountTI,v_plannedClosingDateField,downPaymentTI,

请让我知道该怎么做。

提前致谢

4

5 回答 5

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

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

于 2012-12-27T08:12:18.080 回答
2

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

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

完毕!

于 2012-12-27T21:06:28.757 回答
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,
于 2012-12-27T08:16:32.823 回答
0
perl -pe 's/\n//g' your_file

以上将输出到标准输出。如果你想就地做:

perl -pi -e 's/\n//g' your_file
于 2012-12-27T08:46:24.133 回答
0

您可以使用 Linux 命令sed\n用逗号,或空格替换换行符

sed -z 's/\n/,/g' test.txt > test.csv

-i如果要就地更改文件,也可以添加该选项:

sed -i -z 's/\n/,/g' test.txt
于 2022-01-19T01:29:52.223 回答