在awk中传递变量

时间:2018-05-25 03:38:44

标签: bash awk printing

number=3
var="mango pineapple watermelon"
var1=("echo $var | awk '{print $number}'")
echo $var1

上面的bash脚本不会将数字的值取为3.我需要在上面的代码中使用print语句之后的变量值。我在变量循环中得到变量数作为计数器值。我能实现这个吗?

2 个答案:

答案 0 :(得分:3)

假设你有:

$ n=3

将shell变量传递给awk的典型方法是:

$ awk -v n="$n" 'BEGIN {print n}'
3

如果要将输出捕获到新变量:

$ n2=$(awk -v n="$n" 'BEGIN {print n}')
$ echo "$n2"
3

当你输入到awk的管道输入时,你不清楚你期待什么......

如果您尝试选择行输入的n字:

$ var="mango pineapple watermelon"
$ echo "$var" | awk -v n="$n" '{print $n}'
watermelon

如果你想把它放进var2

$ var2=$(echo "$var" | awk -v n="$n" '{print $n}')
$ echo "$var2"
watermelon

答案 1 :(得分:1)

似乎没用,但这应该有用......

$ number=3
$ var="mango pineapple watermelon"
$ var1=$(echo "$var" | awk -v field="$number" '{print $field}')
$ echo "$var1"

你应该得到"西瓜"作为var1值。