- 締切済み
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 -----略-----
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- trapezium
- ベストアンサー率62% (276/442)
順序良く並んでいるなら sed でもいいかも sed '/^ID/{N;N;N;s/[^\n]*=//g;s/\n/,/gp;};d' sample.txt
- いけだ ひろし(@ike-2000)
- ベストアンサー率53% (69/129)
動作確認していませんが以下の様な感じでできると思います。 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
お礼
ありがとうございます!期待通りの動作になりました!助かりました!また多少仕様変わるかもしれないので、その際はご質問させていただくかもしれません。ありがとうございました!
お礼
sedでも、簡単に出来るんですね!ありがとうございます!確認してみます!