区切り文字を使用して行を抽出し、ファイルの列として追加します。

区切り文字を使用して行を抽出し、ファイルの列として追加します。

次のデータを含むファイルがあります。

a 1
b 2
c,d,e 3,4,5
f 6
g,h 7,8 

...次のような出力が必要です。

a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8

Pythonを使用してこれを行うことはできますが、シェルスクリプトを使用してこれを試したいと思います。まず、区切り文字「、」を含む行を分割してから作業を続行します。これまで私はこれを行を分離するために使用しました。

perl -F, -ane 'print if $#F >=1' filename

...しかし、次のステップで詰まっています。

ベストアンサー1

そしてperl

$ perl -lane '@v=split/,/,$F[1]; $i=0;
              print "$_ $v[$i++]" for split/,/,$F[0]' ip.txt
a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8

最初/2番目の列を分割し、インデックスカウンタを初期化してから、別の列を繰り返し分割してペアを印刷します。

-aオプションは自動的に入力行をスペースに分割し、結果を@F配列に保存します。

おすすめ記事