3

我有一个文件,其中每一行都是逗号分隔值的列表。例如,

1、a、b、c、d、e
2、x、y、z

现在我想将其转换bash如下:

1个
1个
1摄氏度
1天
1e
2×
2年
2z

如何用shell (bash)脚本做到这一点?

4

3 回答 3

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
于 2012-09-13T09:11:27.867 回答
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
于 2012-09-13T09:12:55.047 回答
1

我知道您需要一个 shell 脚本,但它需要是 bash 吗?例如,我通常会使用更高级别的脚本语言和 CSV 库。例如Perl文本::CSV

于 2012-09-13T09:11:18.433 回答