例如我有一个这样的文件:
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(假)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