我有一个文件,其中每一行都是逗号分隔值的列表。例如,
1、a、b、c、d、e 2、x、y、z
现在我想将其转换bash
如下:
1个 1个 1摄氏度 1天 1e 2× 2年 2z
如何用shell (bash)
脚本做到这一点?
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,依此类推。这样的事情可能是:
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
我知道您需要一个 shell 脚本,但它需要是 bash 吗?例如,我通常会使用更高级别的脚本语言和 CSV 库。例如Perl
和文本::CSV