
次のファイルがあります。
<Set of long paragraphs here>
<Set of long paragraphs here>
<Set of long paragraphs here>
After
Address1
Address2
Address3
Before
<Set of long paragraphs here>
<Set of long paragraphs here>
<Set of long paragraphs here>
After
Address1
Address2
Address3
Before
<Set of long paragraphs here>
<Set of long paragraphs here>
<Set of long paragraphs here>
After
Address1
Address2
Address3
Before
<Set of long paragraphs here>
<Set of long paragraphs here>
<Set of long paragraphs here>
After
Address1
Address2
Address3
Before
<Set of long paragraphs here>
<Set of long paragraphs here>
<Set of long paragraphs here>
After
Address1
Address2
Address3
Before
<Set of long paragraphs here>
<Set of long paragraphs here>
<Set of long paragraphs here>
After
単語間の行を別々のBefore
出力ファイルに書き込む必要があります。たとえば、出力ファイルは次のようになります。
Line Number : Address1
Line Number : Address2
Line Number : Address3
......................
......................
私はこれを試しました:
awk '/After/,/Before/' Details.txt>output.txt
しかし、それはうまくいきませんでした。どうすればいいですか?
答え1
次のように試すことができます。
$ awk '/After/{a=1;next}/Before/{a=0}; (a==1){print NR" : "$0}' file
5 : Address1
6 : Address2
7 : Address3
13 : Address1
14 : Address2
15 : Address3
21 : Address1
22 : Address2
23 : Address3
29 : Address1
30 : Address2
31 : Address3
37 : Address1
38 : Address2
39 : Address3
アイデアは簡単です。a
現在の行がAfter
or と一致すると、変数の値が変更され、Before
1 と等しい場合にのみ行が印刷されます。a
別の出力ファイルに保存するには、次のようにします。
awk '/After/{a=1; k++;next}/Before/{a=0}; (a==1){print NR" : "$0 > k".out"}' file
k
ここでは、単語が見つかった回数を計算するために変数を使用しますAfter
。出力ファイルはk
との現在の値になります.out
。あなたの例で上記のコードを実行すると、次のような結果が得られます。
$ ls
1.out 2.out 3.out 4.out 5.out