当我们使用AWK时,1美元用于打印第一个字段,$ 2用于第二个字段,等等。我试图在一个for循环中进行第一次迭代,我需要首先提交打印,第二次迭代第二次提交打印....我尝试下面。
例1:
var="sri|ram|good|boy"
for i in {1..4}{
var1=$($var|awk -F'|' -v x=$i '{print $x}');
}
我是AWK的新手,这是可能的还是有其他方法可以解决这个问题,建议就此。
示例2:
var2="I dont know awk";
for i in {1..5}{
read inputfiled;
echo "$var2"|awk '{print $inputfiled}' #syntax wrong
}
如果我将输入值设为 1 ,则应打印我,如果我将输入值设为 3 ,则应打印知道
任何一个答案都可以帮助我。
答案 0 :(得分:0)
awk 是一款功能强大的工具,支持循环。在您的简单情况下,应用以下方法就足够了:
var="sri|ram|good|boy"
echo $var | awk -F'|' '{for(i=1;i<=NF;i++) print $i}'
输出:
sri
ram
good
boy
NF
- 指向字段总数。
答案 1 :(得分:0)
另一种有趣的方式:
$ echo $var | awk -F\| -v OFS='\n' '{$1=$1}1'
sri
ram
good
boy
$1 = $1
导致使用输出文件分隔符(OFS)替换输入文件分隔符(FS)来重建行。尾随1
打印该行(是一个解析为true的模式,触发默认操作,即打印该行)。