Awk

將變數傳遞給上下文匹配 awk

  • January 21, 2022

我正在嘗試從具有awk從開始模式到結束模式的文件中提取上下文。

這是用於重現的簡化範例輸入:

$ cat file
1
2
3
   
4
5
6

1當我按如下方式傳遞啟動模式時,它會起作用:

$ awk '/1/,/^$/' file

1
2
3

但是當我將變數作為起始模式傳遞時,我沒有得到任何結果:

$ awk -v var=1 '/var/,/^$/' file

變數名不會//在 awk 內部展開。因此,當您擁有 時/var/,awk 將搜尋 av後跟 an a,然後再搜尋 an r。你想要的是:

$  awk -v var=1 '$0~var,/^$/' file
1
2
3

引用自:https://unix.stackexchange.com/questions/687166