trade.dat是我的文件,由数据行组成。
我必须用逗号(,)
连接该文件的每一行 请帮助我答案 0 :(得分:7)
如果您的意思是在每行的末尾添加一个逗号:
sed 's/$/,/' <oldfile >newfile
如果您的意思是将所有行连接成一行,请用逗号分隔:
awk '{printf "%s,",$0}' <oldfile >newfile
或者更正确的一个没有尾随逗号(感谢,@ hacker,指出错误):
awk 'BEGIN {s=""} {printf "%s%s",s,$0;s=","}' <oldfile >newfile
如果您想要shell变量中任何一个的输出,只需使用$()
构造,例如:
str=$(awk 'BEGIN {s=""} {printf "%s%s",s,$0;s=","}' <oldfile)
我发现最好使用$()
而不是反引号,因为它允许我嵌套命令,反引号不能做。
答案 1 :(得分:2)
两个强制性perl
版本(第二个版本归功于William Pursell):
perl -i -p -e 'chomp($_); $_ = "$_,\n"' trade.dat
perl -i -p -e 's/$/,/' trade.dat
请注意
-i.bak
)。答案 2 :(得分:1)
尝试
fullline=""
for line in $(cat trade.dat)
do
fullline="$fullline,$line"
done
然后使用$ full line显示连接的文件
希望这会有所帮助; p
答案 3 :(得分:1)
perl -pe 's/\n/,/ unless eof'
答案 4 :(得分:0)
首先出现在我的脑海中:
gawk -- '{ if(a) { printf ",%s",$0; } else { printf "%s",$0; a=1 } }' trade.dat
如果我正确理解你想要的东西。
答案 5 :(得分:0)
回答标题中的问题,在BASH循环中获取变量中每一行的一种方法是:
cat file.dat | while read line; do echo -n "$line",; done
这将留下一个尾随逗号,但显示如何阅读每一行。
但很明显,sed或awk或perl解决方案最适合您问题正文中描述的问题。