我正在尝试使用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)