たとえば、次のようなファイルがあります。
group1
data1
data2
data3
group2
data1
data2
data3
group3
data1
data2
data3
ファイルとそのデータから特定のグループをインポートしたいと思います。たとえば、私はすべてのデータを取得したいと思いますgroup2
。
答え1
そしてawk
:
awk '$0=="group2" {print; gr=1; next}; /^group/ {gr=0}; gr {print}' file.txt
$0=="group2" {print; gr=1; next}
、行にのみ含まれている場合は、行をgroup2
印刷して変数をgr
1(true)に設定してから、次の行に移動します。/^group/ {gr=0}
group
、行が(別のグループ)で始まる場合、gr
0(false)に設定されます。gr {print}
gr
trueの場合、行を印刷します。基本的な作業は行awk
(レコード)を印刷することですので、次のようにできます。awk '$0=="group2" {print; gr=1; next}; /^group/ {gr=0}; gr' file.txt
例:
$ cat file.txt
group1
data1
data2
data3
group2
data1
data2
data3
data4
group3
data1
data2
data3
$ awk '$0=="group2" {print; gr=1; next}; /^group/ {gr=0}; gr {print}' file.txt
group2
data1
data2
data3
data4