我想使用bash脚本循环一个awk命令,并且我在awk命令的单引号内包含一个变量很难。我认为我应该完全用awk来完成这个任务,但是现在我对bash感觉更加舒适。在Bash中使用awk命令
#!/bin/bash
index="1"
while [ $index -le 13 ]
do
awk "'"/^$index/ {print}"'" text.txt
done
我想使用bash脚本循环一个awk命令,并且我在awk命令的单引号内包含一个变量很难。我认为我应该完全用awk来完成这个任务,但是现在我对bash感觉更加舒适。在Bash中使用awk命令
#!/bin/bash
index="1"
while [ $index -le 13 ]
do
awk "'"/^$index/ {print}"'" text.txt
done
awk '/'"$index"'/' text.txt
# A lil play with the script part where you split the awk command
# and sandwich the bash variable in between using double quotes
# Note awk prints by default, so idiomatic awk omits the '{print}' too.
应该做的,或者使用grep
像
grep "$index" text.txt # Mind the double quotes
注:-le
用于比较数字,所以你可能变化到index="1"
index=1
。
''/'“$ index”'/''这是不好的做法,使用'-v varname =“somevalue”'而不是 –
使用标准方法 - 的awk
设置-v
选项/传递变量:
awk -v idx="$index" '$0 ~ "^"idx' text.txt
在这里,我已经设置了可变idx
为具有壳可变$index
的值。在awk
里面,我简单地使用idx
作为awk
变量。
$0 ~ "^"idx
匹配记录以(^
)开头的任何变量idx
包含的匹配项;如果是的话,打印记录。
为什么不只是'grep'^ $ index“'?好像使用awk来达到这个目的...... – John3136