3

各行がコンマ区切りの値のリストであるファイルがあります。例えば、

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

今、私は次のようにそれを変換したいと思いbashます:

1a
1b
1c
1 日
1 e
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

シェル スクリプトが必要なのはわかりましたが、それは bash である必要がありますか? たとえば、通常は高レベルのスクリプト言語と CSV ライブラリを使用します。例PerlText::CSV

于 2012-09-13T09:11:18.433 に答える