我正在尝试在数字序列之间获取数据,例如:
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