- ベストアンサー
awkを使用したファイルの1行表示とCSV形式への変換方法
- awkを使用して、複数行に分かれているファイルを1行で表示する方法と、CSV形式に変換する方法について教えてください。
- 例えば、以下のようなファイルがあります。[TARGET XXX]で区切られた複数行があり、authority.target.accountが複数ある場合もあります。awkを使用して、これらのファイルを1行に結合し、CSV形式に変換する方法を教えてください。
- また、この処理をawkだけでなくperlでも行うことは可能でしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
[TARGET14],reserved.target.name=Cata/検証/test,reserved.target.type=QUERY・・・ [TARGET34904],reserved.target.name=Catalog/~検索/0830,reserved.target.type=QUERY・・ という具合にしてExcelにCSVとして読み込ませるような感じなのでしょうか? としたら,たとえば先頭に"[TARGET"があったら改行ということにして,次のような感じでいけると思いますが. { if ($0=="") next; if (substr($0,0,7)=="[TARGET") { printf("\n%s",$0); } else { printf(",%s",$0); } } 一番最初に改行が入りますけど,邪魔ならエディタで取っちゃえば良いでしょう.
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
Perl ならたいていのことができそうだけど, そもそも「1行に表示する」とはどういうことだ? そして, 複数ある場合にはどうしたいの? 結果としてどうなればいいのかを言葉で表現するなり例示するなりしてください.
補足
Tacosanさん すみません、説明不足でした。 要は、[TARGET XXX]から始まり、空白行までが1固まりになるのですが、 空白行までを改行せずに1行で表示したいです。 ■前 [TARGET14] reserved.target.name=Cata/検証/test reserved.target.type=QUERY authority.target.account=ADD,RWXECA,USER,avadmin owner.target.account=avadmin resource.target.alias=test [TARGET 34904] ■後 [TARGET 14],reserved.target.name=Cata/検証/test,reserved.target.type=QUERY,authority.target.account=ADD,RWXECA,USER,avadmin,owner.target.account=avadmin,resource.target.alias=test [TARGET 34904],・・・・ 改行されているのを、[TARGET XXX],aaa,bbb,・・・のように1行で表示させたいです。 "authority.target.account"という項目が複数存在する場合があり、そこの処理で 行き詰ってました。
お礼
maccha_nekoさん 回答ありがとうございました。 まさしくやりたかったことはこれです!助かりました。 改行というところに目が行かず、ひたすら変数に入れてどうにかやろうと してました。