3

我们可以传递 NR给变量awk吗?

我有一个这样的脚本:

     awk -v { blah blah..   
     ..........
     count--
     print count
    }
     if (count==0)
    {print "The end of function"
     print NR 
     exit
     } 

这是代码的 awk 部分。我想将NR var2 传递为:

    sed -n ''"$var1"','"$var2"'p'

必须多次重复使用!

感谢您的回复。

4

3 回答 3

4

如果您只想打印某个行的子集,那么您就快到了。-v 标志是要走的路。

awk -v var1=15 -v var2=25 'NR>=var1 && NR<=var2 {blah blah ...}'

当然,您必须将 15 和 25 更改为您需要的。注意变量不应该被封装在引号中。

于 2012-06-25T15:39:54.310 回答
3

我不知道你想用awk,sedNR变量来实现什么。你的意思是文件的行数?

这个命令得到它:

wc -l infile | sed -e 's/ .*$//'

因此,将它与-vswitch to 一起awk使用并根据需要使用它。下一个命令将打印10,因为infile我的计算机中有十行。

awk -v num_lines=$(wc -l infile | sed -e 's/ .*$//') 'BEGIN { print num_lines }'
于 2012-06-25T14:41:39.183 回答
3

正如其他人所建议的那样,有更好的方法来实现总体目标。

但是,为了回答您的具体问题:

var2=$(awk 'END {print NR}' inputfile)

并在 AWK 脚本中添加您可能需要的任何其他内容。

于 2012-06-25T20:36:13.087 回答