无法将外壳变量传递到 awk 中



我正在尝试在数字序列之间获取数据,例如:

100000000
1 2 3 4
5 6 7 8
....
100001000
....
200000000

我使用 awk 匹配模式,我可以在不使用变量的情况下成功使用它,例如:

awk '/10000000 /{flag=1;next}/10001000/{exit}flag' input.dat

但是,当我尝试在此命令中使用 shell 变量时,它不会给出任何输出:

for i in {1..4}
do
    step1=$(($i*10000000))
    step2=$(($step1+1000))
    awk -v arg1="$step1" -v arg2="$step2" '/arg1 /{flag=1;next}/arg2 /{exit}flag' input.dat
done

我缺少什么明显的东西吗?

正则表达式文字/.../不允许变量。您可以使用~运算符在正则表达式中与变量进行正则表达式匹配:

 awk -v arg1="$step1" -v arg2="$step2" '$0 ~ arg1 " "{flag=1; next}
      $0 ~ arg2{exit} flag' input.dat 

相关内容

  • 没有找到相关文章

最新更新