我有一个文件,每行都是逗号分隔值的列表。例如,
1, a, b, c, d, e 2, x, y, z
现在我想将其转换为bash
,如下所示:
1 a 1 b 1 c 1 d 1 e 2 x 2 y 2 z
如何使用shell (bash)
脚本执行此操作?
答案 0 :(得分:7)
awk -F, '{for(i=2;i<=NF;i++)print $1,$i}' temp
测试如下:
> cat temp
1, a, b, c, d, e
2, x, y, z
> awk -F, '{for(i=2;i<=NF;i++)print $1,$i}' temp
1 a
1 b
1 c
1 d
1 e
2 x
2 y
2 z
答案 1 :(得分:2)
您可以将线条拆分为标记并将其放入数组中。数组的第一个元素将是数字,在您的情况下它是1或2,依此类推。这样的事情可能是:
while read line
do
arrIN=(${line//,/ })
## make a loop and echo them
## arrIN[0] will have the initial number
done < $file
# $file is the input file you are reading
答案 2 :(得分:1)
我知道你需要一个shell脚本,但它需要是bash吗?例如我通常会使用更高级别的脚本语言和CSV库。例如Perl
和Text::CSV