shell & awk 变量传递+awk综合概要

AWK教程
本文介绍AWK的基本用法,包括变量传递、内置变量、文件配置、数组操作、流程控制及字符处理等关键知识点。

转载:http://hi.baidu.com/%D9%DC%D5%BC%BE%FD/blog/item/dbc467f9c9d8ca02d8f9fd40.html 

1."'$var'"

#!/bin/bash
var="test"
awk 'BEGIN{print "'$var'"}'

这种写法要求变量var中不含有空格。若var中含有空格,那么就要用 “‘“$var”’”


2.export变量,然后用ENVIRON[“var”]

#!/bin/bash
var="test"
export var
awk 'BEGIN{print ENVIRON["var"]}'

3.
使用-v选项。

#!/bin/bash
var="test"
awk -v nvar="$var" 'BEGIN{print nvar}'

shell
使用awk传递出来的变量

eval

along@along-laptop:~/code/shell/shell$ cat awktest.sh
#!/bin/bash
var1="test"
var2="along"

eval $(awk 'BEGIN{print "var1=along;var2=test"}')
echo "var1:"$var1
echo "var2:"$var2
along@along-laptop:~/code/shell/shell$ ./awktest.sh
var1:along
var2:test

 

1.awk概要

2、AWK部份内置变量:
 FILENAME 当前文件名
 FNR当前文件的总共记录数
 FS输入的字段分隔符
 NF当前记录的字段数目
 NR到目前为止,读入的记录数目
 OFS输出文件的字段分隔符
 ORS输出文件的记录分隔符
 RS输入记录的分隔符
3
、/ETC/RESOLV.conf文件是SCO的域名解释配置文件,格式:NAMESERVER IP地址,另外,必须在用户
的.PROFILE文件里面加上一句,HOSTRESORDER="local nis bind";export HOSTRESORDER,这句话,是
设置在主机解释域名的搜索顺序,先是本机,然后是NIS,再是DNS。
4
、在AWK中,数组的下标可以是数字,也可以是字符串,如,arr[1]或者是arr[sales]。
5
、split(string,arr,fs)函数可以把字符串STRING以FS为分隔符分解成为一个个的数组元素,放到ARR中。
6
、delete arr [subscript]删除数组ARR[subscript]元素。
7
、在AWK中,for( i in arr) statements是一个FOR循环。
8
、if (expression) statement1 [else statment2];
9
、expression1
    while(expression2)
       {statement1;expression3}
10
、do {statement} while (expression)
11
、NEXT是强迫AWK读入下一个记录,进行处理
12
、在AWK中,PRINT或者是PRINTF输出表达式中如果有关系比较符号(如大于>),则需要把PRINT或者是
PRINTF
用圆括号括起来,如print $0,($2 > $3)是打印记录,随后是1或者0;但是如果是print $0,$2 >;$3则
是打印整条记录,第二个字段到文件名为$3的文件中去。
13
、在AWK中,可以用CLOSE关闭一个文件(CLOSE(filename));关闭一个管道(close(command_line));
14
、在AWK中,输入可以用以下几种方式:
     < filename
     getline
     getline <file
     getline x <file
     command | getline
     command | getline x
    
如果GETLINE正确,则返回1,文件结束返回0,出错返回-1。
15
、在AWK中的一些字符处理函数:
     gsub(r,s,t)
以字符S替换满足正则表达式R的字符串T中R。
     index(s,t)
在字符串S中查找字符串T第一次出现的位置,没有则返回零。
     legnth(s)
测字符串S的长度。
     match(s,re)
在字符串S中查找正则表达式RE的第一次出现的位置,如果有则返回,同时置RSTART为
该数字;如果没有则返回0。
     split(string,arr,fs)
见前面。
     sprintf(format,expression,expression1,...)
     sub(r,s,t)
以s替换字符串T中的R。
     substr(s,p)
取字符中S从位置P开始的字符串。
     substr(s,p,n)
取字符中S从位置P开始的N个字符。
     tolower(s)
     toupper(s)
  
在字符处理函数中,如果被处理字符串为空,则缺省值是$0。
16
、在AWK中,还可以用system(command_line)运行系统命令。
17
、还可以自定义函数:
    function name(parameter_list){statements}
其中,parameter_list是以逗号分隔的变量组合。在函数
中如果变量少于定义的数字,则少的设为空;多的则被忽略。为了在函数中有返回值,必须在函数中有一
句return expression
18
、在AW中,如果要强制转换一个变量的类型,则需要number ""是强制number变量为字符型变量。
19
、在AWK中,把一个字符型变量强制转换成数值型,则需要string+0。
20
、AWK程序成功执行返回0,否则返回>;0
21
、在正则表达式中,",[ /t]* | [ /t]+"表示以,号和(或者)与空格空行的记录,或者是完全就是空格或者
空行。在正则表达式中*代表任意字符,+代表前缀字符的一个或者任意多个的组合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值