テキストファイルを変換しようとしていますが、好きなように整理するのは少し難しいようです。
ファイルは以下のようになります。
(0,{35=9000.0, 36=9000.0, 33=9000.0, 34=9000.0})
次のように再構成したい
0 33 9000.0
0 34 9000.0
0 35 9000.0
0 36 9000.0
私はShellに初めて触れたので、問題を解決するにはあなたの助けが必要です。項目をの値でソートしたいと思います{}
。
ベストアンサー1
Perlの解決策は次のとおりです。
cat b.txt
(0,1,{35=9000.0, 36=9000.0, 33=9000.0, 34=9000.0})
perl -lne '$_=~/^\(([\d\,\.]+)\s*\{(.*)\}\)$/; @first=split /[,\s]/, $1; @second=split /,\s/, $2; map{($k, $v) = split "=", $_; $h{$k}=$v} @second; foreach $k (sort keys(%h)) { print join(" ", @first), " $k ",$h{$k}; }' b.txt
0 1 33 9000.0
0 1 34 9000.0
0 1 35 9000.0
0 1 36 9000.0
(もちろん、このPerlプログラムは1行以上を使用し、変数に意味のある名前を付ける方法を知っていれば読みやすくなります)