ファイル内の複数行をグループ化する方法

ファイル内の複数行をグループ化する方法

たとえば、次のようなファイルがあります。

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印刷して変数をgr1(true)に設定してから、次の行に移動します。

  • /^group/ {gr=0}group、行が(別のグループ)で始まる場合、gr0(false)に設定されます。

  • gr {print}grtrueの場合、行を印刷します。基本的な作業は行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

関連情報