awk 将关键字下的值存储在文件变量中

awk 将关键字下的值存储在文件变量中

我正在尝试使用awk将特定单词 下的所有行打印Label到变量$var。在此示例中,有两个值,但情况并不总是如此(每次都会不同),但单词将始终相同且位于相同位置。我的两次尝试都执行了,但执行echo了找到该单词的行。

文件

[Header]                                
Name    1                                                   

[ID]                                
1
1                               

[ID1]                               

[Info]                              
Label   xxx
1,,,,xxx
2,,,,yyy

awk 1

var=$(awk -vvar="Label" '($1 == var) {print $0}' file)
echo "$var"

Label   xxx

awk 2

var=$(awk '/Label/{for(i=0;i<1;i++){print;getline}}' file)
echo "$var"

Label   xxx

想要的

echo "$var"
1
2

答案1

使用变量 - 在我称之为的示例中p。找到标签后设置变量。从下一行开始,打印该行。

var=$(awk 'p==1{print} /Label/{p=1}' file)

或者使用变量来存储“标签”搜索字符串:

var=$(awk -vlab="Label" 'p==1{print} $1==lab{p=1}' file)

相关内容