awkを使用して2行の間の内容を取得します。

awkを使用して2行の間の内容を取得します。

質問1:

awk次のように、2つの異なるキーワード間の行を取得するために使用できます。

$cat test1.sh
#!/bin/bash
awk '/1/,/5/{print}' file.txt

$ cat file.txt 
0
1
2
3
4
5
6
7
8
1
q

出力は次のとおりです

$ sh -x test1.sh 
+ awk '/1/,/5/{print}' file.txt
1
2
3
4
5
1
q

「1 2 3 4 5」のみどうやって入手できますか?使用しないでくださいgrep -Bgrep -Ased

質問2:2つの同じキーワード「1」の間で「1 2 3 4 5 6 7 8 1」を取得するには?とを使用しないでくださいgrep -Bgrep -Ased

ベストアンサー1

エクスポートを使用できます。

$ awk '/1/,/5/{print}$0==5{exit}' file.txt

$ awk '$1==1{a++}a>=2{print;exit}a{print}' file.txt
1
2
3
4
5
6
7
8
1

$1==1{a++} --> 最初のフィールド値が 1 の場合、変数 a の値を増やします。

a> = 2 {print; exit} --> a値が2以上の場合は、現在の行を印刷して終了します(ファイルを処理しなくなりました)。

a{print} --> aの値が0でない場合は、次の行を印刷します。

おすすめ記事