awk
を使用して、特定の単語の下のすべての行をLabel
変数に印刷しようとします$var
。この例には2つの値がありますが、必ずしもそうではありませんが(毎回異なる場合があります)、単語は常に同じで同じ場所にあります。echo
単語が見つかった行を除いて、両方の試みが実行されました。
文書
[Header]
Name 1
[ID]
1
1
[ID1]
[Info]
Label xxx
1,,,,xxx
2,,,,yyy
ああ1
var=$(awk -vvar="Label" '($1 == var) {print $0}' file)
echo "$var"
Label xxx
ああ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)