abc.dat文件包含行

1
2
3

代码是
tradeline=""
for line in $(cat abc.dat)
do
tradeline="$line,$tradeline"
done

采样输出AM为1,2,3,
但我希望输出为“1”,“2”,“3”,
你能帮我一下吗

最佳答案

你的代码有很多问题,第一个是你所描述的。
它还将把数字放在相反的顺序,并有一个尾随逗号,这可能不是你想要的。
如果这是你想要的,就用第二种方法。
解决方案1,右顺序,无尾随逗号:

tradeline=""
sep=""
for line in $(cat abc.dat) ; do
    tradeline="${tradeline}${sep}\"${line}\""
    sep=","
done
echo ${tradeline}

解决方案2,带尾随逗号的右顺序:
tradeline=""
for line in $(cat abc.dat) ; do
    tradeline="${tradeline}\"${line}\","
done
echo ${tradeline}

解决方案3,简单得多,使用工作所需的工具:
awk 'BEGIN {sep=""} {printf "%s\"%s\"",sep,$0;sep=","} END {print}' abc.dat

解决方案3将是我的首选,因为它将更快,并能够处理输入行中的空白。

07-28 01:07