• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:お久しぶりです。awkに関する質問です。)

awkを使用したファイルの1行表示とCSV形式への変換方法

このQ&Aのポイント
  • awkを使用して、複数行に分かれているファイルを1行で表示する方法と、CSV形式に変換する方法について教えてください。
  • 例えば、以下のようなファイルがあります。[TARGET XXX]で区切られた複数行があり、authority.target.accountが複数ある場合もあります。awkを使用して、これらのファイルを1行に結合し、CSV形式に変換する方法を教えてください。
  • また、この処理をawkだけでなくperlでも行うことは可能でしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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);  } } 一番最初に改行が入りますけど,邪魔ならエディタで取っちゃえば良いでしょう.

yuntaka
質問者

お礼

maccha_nekoさん 回答ありがとうございました。 まさしくやりたかったことはこれです!助かりました。 改行というところに目が行かず、ひたすら変数に入れてどうにかやろうと してました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

Perl ならたいていのことができそうだけど, そもそも「1行に表示する」とはどういうことだ? そして, 複数ある場合にはどうしたいの? 結果としてどうなればいいのかを言葉で表現するなり例示するなりしてください.

yuntaka
質問者

補足

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"という項目が複数存在する場合があり、そこの処理で 行き詰ってました。

関連するQ&A