예를 들어 다음과 같은 파일이 있습니다.
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