• 締切済み

UNIX シェルスクリプト 文字列操作について

あるシェルスクリプトを作成しなければいけないのですが、あまりシェルに詳しくないのでご教授いただけると助かります。 Linux上で以下のようなIDごとに定義してあるテキストファイルがあり ます。 ※2000IDほど記載してあります。 cat sample.txt --------------- ID=00001 parm=xxxxx flag=0 path=xxxxx --------------- ID=00002 parm=yyyyy flag=1 path=yyyyy --------------- ID=00003 以下略--- 上記の定義ファイルをID単位でエクセルの表に纏めたいので、以下のような横並びのCSVファイルに出力させるシェルスクリプトを作りたいのですが、どうかご教授いただけると助かります。 スクリプト実行後イメージ cat result.csv 00001,xxxxx,0,xxxxx 00002,yyyyy,1,yyyyy 00003 -----略-----

みんなの回答

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

順序良く並んでいるなら sed でもいいかも sed '/^ID/{N;N;N;s/[^\n]*=//g;s/\n/,/gp;};d' sample.txt

seemogujp
質問者

お礼

sedでも、簡単に出来るんですね!ありがとうございます!確認してみます!

回答No.1

動作確認していませんが以下の様な感じでできると思います。 cat sample.txt | awk \ 'BEGIN { FS="=" } { if (substr($0,1,1)=="-") { next } A[$1]=$2 if ($1=="path") { printf("%s,%s,%s,%s\n",A["ID"],A["parm"],A["flag"],A["path"]) } } END {}' > result.csv

seemogujp
質問者

お礼

ありがとうございます!期待通りの動作になりました!助かりました!また多少仕様変わるかもしれないので、その際はご質問させていただくかもしれません。ありがとうございました!