各行がコンマ区切りの値のリストであるファイルがあります。例えば、
1、a、b、c、d、e 2、x、y、z
今、私は次のようにそれを変換したいと思いbash
ます:
1a 1b 1c 1 日 1 e 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
シェル スクリプトが必要なのはわかりましたが、それは bash である必要がありますか? たとえば、通常は高レベルのスクリプト言語と CSV ライブラリを使用します。例Perl
とText::CSV