1つだけ過去を変えられるとしたら?

お久しぶりです。awkに関する質問です。
以下のことがawkでどうやればできるのか教えてください。。。
perlでもokです。

たとえば、以下のようなファイルがあります。
↓ここから
--------------------------------------
[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

[TARGET34904]
reserved.target.name=Catalog/~検索/0830
reserved.target.type=QUERY
authority.target.account=ADD,RWX,GROUP,KGENPYO
authority.target.account=ADD,RWX,USER,avadmin
authority.target.account=ADD,RWX,GROUP,KYD
authority.target.account=ADD,RWX,GROUP,KYYA
authority.target.account=ADD,RWX,GROUP,KYC
authority.target.account=ADD,RWX,GROUP,KYDMTEST
authority.target.account=ADD,RWX,GROUP,KCHI
authority.target.account=ADD,RWXDPECA,USER,Y19901
owner.target.account=Y19901
resource.target.alias=データver.2.0
--------------------------------------

上記のファイルを1行に表示したい場合、どのように記述したらいいでしょうか。
CSVのようにカンマなどで区切って表示したいです。
[TARGET XXX]は空白行で区切られています。

ポイントはauthority.target.accountが複数ある(数は不定)ところです。
複数あるために、条件を絞ることができません。。

A 回答 (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);
 }
}
一番最初に改行が入りますけど,邪魔ならエディタで取っちゃえば良いでしょう.
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/08/29 23:31

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

補足日時:2010/08/29 23:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!