2016-11-11 8 views
-1

私は、次のコードを試してみましたが、それは、キーと値のペアとループ、ダブル改行など、すべて単一の改行値として適切な出力を与えていない値awkを使用してキー値のペアを取得する方法は?

f:0 
c:Test C 
s:test S 
ctype:0 
a:test A 
t:10 
r:test r 

f:0 
c:Test C1 
s:test S1 
ctype:1 
a:test A1 
t:10 
r:test r 

f:20 
c:Test C 
s:test S 
ctype:2 
a:test A1 
t:0 
r:test r 

を次のファイルをtxtをしている:

awk ' 
    BEGIN { 
    FS="\n" 
    RS="" 
} 
{ 
    print $1 "\n " $2 "\n" $3 
} 

awk以外のものを使うことができます。

編集:私はループにデータを欲しいとアクションを実行

if(ctype==0){ 
execute c; 
}else if(ctype==1){ execute a} 

OUTPUTは次のようになります。

+0

awk -F: 'NF {print $ 1、$ 2}' file ' – anubhava

+5

期待される出力は何ですか? – user000001

+1

私たちにあなたがしたいことをしないというコマンドを表示し、あなたが望んでいないことを私たちに伝えることは、あなたが望んでいることを私たちに伝えるように遠くに行かない! –

答えて

0

私はあなたの質問を理解し、完全にわからないんだけど、これはあなたが心の中に持っているものに近いです:

{ 
    if (/^a:/) a = substr($0, 3) 
    if (/^c:/) c = substr($0, 3) 
    if (/^ctype:/) ctype = substr($0, 7) 
    if (/^$/) { 
     if (ctype == "0") { 
      print "a: [", a, "]" 
     } else { 
      print "c: [", c, "]" 
     } 
    } 
} 
END { 
    if (ctype == "0") { 
     print "a: [", a, "]" 
    } else { 
     print "c: [", c, "]" 
    } 
} 

これは、Cとのctypeの値を探して、テストの各ブロックを読み込みctypeの値に基づいてaまたはcのいずれかの値を出力します。それはあなたの質問の編集部分があなたが達成したいと思っていると思われるものです。うまくいけば、少なくとも正しい方向にあなたを指し示すでしょう。

関連する問題