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"