awk怎么通过参数化实现指定域的输出?

2025-05-10 01:49:50
推荐回答(3个)
回答1:

你好,可以将shell变量传入awk命令中,你的要求$var应该是域变量(如1,2...).
可以如下解决:
echo $str|awk -F',' '{print '$"$var"'}'
具体的解释,你可以参看一下chinaunix上面的shell十三问,有专门探讨关于shell元字符和sed,awk命令里面如何传入shell变量,以及如何将awk和sed的结果赋予shell变量.

在我这边测试可以运行:
简单测试脚本
#! /bin/sh
#fileName:test.sh
var=$1
str="1,2,3,4,5,6"
echo $str|awk -F',' '{print '$"$var"'}'

执行./test.sh 3
输出结果:3

回答2:

var是shell变量,而awk是Linux中独立于shell的一个工具。在awk中如果要解析shell变量,需要将变量拿到awk的作用域外面来,即,先关闭awk的单引号,引用变量后再次打开。
echo $str|awk -F, '{print '$var'}'

回答3:

var=6
str="11,22,33,44,55,66,88"
echo $str|awk -F',' -v number=$var '{print $number}'

上次发错,这次搞定 ,怎么还没采纳