awk行为语句中如何得到外部变量,如某一文件总行数
尝试了如下的脚本
totallines=$(cat $1|wc -l) echo $totallines cat $1|awk '{print $totallines}'
执行该脚本
./awk_get_totallines.sh temp.txt 10 3 2 1 4 5 6 9 10 8 7
得到的是一串随机数字,似乎并未能正确识别到totallines这一shell变量.
问如何传递动态变量给awk的行为语句呢?
问题背景:
因为使用的tac来读取文件(从尾到头), 想在打印满足条件的行时同时打印行号
#其中11为总行数 总行数-NR = 正确的行号
$ tac temp.txt | awk '{if($0%2==0) print 11-NR,$0}'
可通过如下方式传递变量给awk行为语句
totallines=$(cat $1|wc -l) tac $1|awk -v total="$totallines" '{print total+1-NR, $0}'
http://stackoverflow.com/questions/19075671/how-to-use-shell-variables-in-awk-script
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。