实例讲解4--awk命令i

69 篇文章 0 订阅

28.awk的split、数组、注释
 test.awk 文件:
#!/bin/awk -f
BEGIN {
    record="123#456#789"
    num=split(record,myarray,"#")
}
END{
    for(i=1;i<=num;i++)
    {
        print myarray[i]    # print the element of array 
    }
}
 调用:
 ./test.awk  /dev/null
 输出:
123
456
789

29.awk打印传入字符串的第n个分隔域。
  str是字符串,num定义了要打印的域的序号。
  str=”abc bcd cde efg”
  num=2
echo "$num $str" | awk '{k=$1+1; print $k}'
打印出:
bcd
注:k的值是$1+1而不是$1,因为$num也要算awk的传入参数。

30.在awk中使用shell中的变量
str1="hello  world"
str2="world"
echo "$str1" | eval "awk  '{
if(\$2==\"$str2\")
print(\"$str1\")
}'"
打印
hello  world
另一种方法就是把shell中的变量当参数通过管道传入到awk中。

需求:
已知变量 usr的值为 sms, 要求使用 awk 在 /etc/passwd文件中查找(以:为分隔符号), 当匹配到第一个域(name)时,打印第6个域(home).

所需表达式:
awk –F: ‘{ if($1==”sms”) print $6 }’ /etc/passwd

#!/bin/ksh
#set -x
usr="sms"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值