-1

私は次のことを達成しようとしています。

  1. テキスト ファイル内の最初の ' ( ' 記号 (常に新しい行の先頭にあります)を見つけて、' (host 'などの変数に続くホスト名を' host ' にします。

  2. ' =-=-= ' 区切り文字の最初のインスタンスと同じ区切り文字 (' =-=-= ') の 2 番目のインスタンスの間のテキストを、 host-messages.txtなどの項目 1 の変数という名前の新しいファイルにコピーします。

  3. ' =-=-= ' 区切り文字の 2 番目のインスタンスと同じ区切り文字の 3 番目のインスタンスの間のテキストを、 host-df.txtなどの項目 1 の変数と同じ名前の新しいファイルにコピーします。

  4. ' =-=-= ' デリミタの 3 番目のインスタンスと、' ( hostname 'の次のインスタンスなど、新しい行の最初の文字の' ( ' の次のインスタンスの間のテキストを、名前が次の新しいファイルにコピーします。 host-dfa.txtなどの item の変数

  5. ファイルの終わりまで手順 1 ~ 4 を繰り返し、' (host ' が見つからなくなります。

とにかく私が達成しようとしているのは、次のようなデータを抽出することです:

(hostname1 : 056603)  1    
=-=-=
TEXT
TEXT
TEXT
=-=-=
TEXT2
TEXT2
TEXT2
=-=-=
TEXT3
TEXT3
TEXT3
(hostname2
=-=-=
etc...

新しく作成されたファイルは、hostname1-messages.txt、hostname1-df.txt、および hostname1-dfa.txt である必要があります。

私がこれまでに思いついた最高のものは

awk '/=-=-=/{x="F"++i;next}{print > x;}' test.txt

しかし、それは機能していません。

4

1 に答える 1

1

私たちがあなたを助けるのに役立つサンプル入力と予想される出力を投稿してください。

awk '
BEGIN{ sfx[1]="-messages.txt"; sfx[2]="-df.txt"; sfx[3]="-dfa.txt" }
sub(/^\(/,"") { host=$0; nr=0; next }
/=-=-=/ { nr++; next }
{ print > host sfx[nr] }
' file
于 2012-10-22T01:27:08.423 に答える