【发布时间】:2017-01-09 22:14:33
【问题描述】:
我有一个文本文件 /tmp/some.txt 具有以下值
JOHN YES 6 6 2345762
SHAUN NO 6 6 2345748
我想创建一个具有以下格式的 csv 文件(即基于行。不基于列)。
JOHN,YES,6,6,2345762
SHAUN,NO,6,6,2345748
我试过下面的代码
for i in `wc -l /tmp/some.txt | awk '{print $1}'`
do
awk 'NR==$i' /tmp/some.txt | awk '{print $1","$2","$3","$4","$5}' >> /tmp/some.csv
done
这里wc -l /tmp/some.txt | awk '{print $1}' 将获得值为 2(即文本文件中的 2 行)。
对于每一行,awk 'NR==$i' /tmp/some.txt | awk '{print $1","$2","$3","$4","$5}' 会将 5 个字段打印到 some.csvfile 中,用逗号分隔。
当我分别执行每个命令时,它会起作用。但是当我将它作为一个 shell 脚本时,我得到了空的some.csv 文件。
【问题讨论】:
-
为什么不用一个逗号替换所有的空格块?