파일에서 여러 줄을 그룹화하는 방법

파일에서 여러 줄을 그룹화하는 방법

예를 들어 다음과 같은 파일이 있습니다.

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

관련 정보