我们可以将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'
必须多次重复使用!
感谢您的回复。
答案 0 :(得分:3)
我不知道您希望通过awk
,sed
和NR
变量实现什么目标。你的意思是文件的行数吗?
这个命令得到它:
wc -l infile | sed -e 's/ .*$//'
因此,请使用-v
切换到awk
并根据需要使用它。下一个命令将打印10
,因为infile
在我的计算机中有十行。
awk -v num_lines=$(wc -l infile | sed -e 's/ .*$//') 'BEGIN { print num_lines }'
答案 1 :(得分:3)
如果您只想打印某个线条的子集,那么几乎就在那里。 -v标志是要走的路。
awk -v var1=15 -v var2=25 'NR>=var1 && NR<=var2 {blah blah ...}'
当然,您必须将15和25更改为您需要的内容。请注意,变量不应封装在引号中。
答案 2 :(得分:3)
正如其他人所说,有更好的方法来实现总体目标。
但是,为了回答您的具体问题:
var2=$(awk 'END {print NR}' inputfile)
并在AWK脚本中添加您可能需要的任何其他内容。