awk 引用外部变量的六种方法:
1. awk -v awkvar=$extvar
... #使变量的作用域扩展至BEGIN{}
2. awk '<awk expr
ession>' "awkvar=$extvar"
filename #BEGIN段不可用
3. 在awk表达式中使用'$extvar'
4. 模式引用(在正则表达式中引用外部变量) '"$extvar"'
5. 遍历外部数组(用于BEGIN段处理) awk -f 'BEGIN{for(i=1;i<ARGC;i++)print ARGV[i]}' ${extarr[@]}
6. 引用环境变量 ENVIRON["environment variable"]
eg:
cat http-access.log
[29/Mar/2010:01:46:59 +0000] "GET /blog/wp-content/themes/techified/images/bg_rss.gif HTTP/1.1" 200 652 "http://mydemoon.cn/blog/wp-content/themes/techified/style.css" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"
[29/Mar/2010:01:46:59 +0000] "GET /blog/wp-content/uploads/2009/12/IMG_00931-1024x768.jpg HTTP/1.1" 200 172422 "http://mydemoon.cn/blog/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"
[29/Mar/2010:01:46:59 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"
#!/bin/bash
dat1=`date |awk '{print $2}'`
dat2=`date -v -1m |awk '{print $2}'`
echo $dat1 $dat2
#awk -F"//" -v datvar1=$dat1 -v datvar2=$dat2 '$2 == datvar1 || $2 == datvar2 {print $0}' /home/zhubinfeng/http-access.log
awk -F"//" '$2 == data1 {print $0}' data1=$dat1 /home/zhubinfeng/http-access.log
3. 在awk表达式中使用'$extvar'
4. 模式引用(在正则表达式中引用外部变量) '"$extvar"'
5. 遍历外部数组(用于BEGIN段处理) awk -f 'BEGIN{for(i=1;i<ARGC;i++)print ARGV[i]}' ${extarr[@]}
6. 引用环境变量 ENVIRON["environment variable"]
eg:
cat http-access.log
[29/Mar/2010:01:46:59 +0000] "GET /blog/wp-content/themes/techified/images/bg_rss.gif HTTP/1.1" 200 652 "http://mydemoon.cn/blog/wp-content/themes/techified/style.css" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"
[29/Mar/2010:01:46:59 +0000] "GET /blog/wp-content/uploads/2009/12/IMG_00931-1024x768.jpg HTTP/1.1" 200 172422 "http://mydemoon.cn/blog/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"
[29/Mar/2010:01:46:59 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"
#!/bin/bash
dat1=`date |awk '{print $2}'`
dat2=`date -v -1m |awk '{print $2}'`
echo $dat1 $dat2
#awk -F"//" -v datvar1=$dat1 -v datvar2=$dat2 '$2 == datvar1 || $2 == datvar2 {print $0}' /home/zhubinfeng/http-access.log
awk -F"//" '$2 == data1 {print $0}' data1=$dat1 /home/zhubinfeng/http-access.log
本文详细介绍了awk中引用外部变量的六种方法,并通过实例展示了如何在实际场景中应用这些方法。

436

被折叠的 条评论
为什么被折叠?



