awk (1)

awk -F: '$2=="!" {printf("%s no password!\n",$1)}' /etc/shadow
Debian-exim no password!
mysql no password!
haha no password!
问题:linux中怎样去判断一个用户有没有密码
awk printf 中为什么输出结果是这样子的
http://linux.chinaunix.net/techdoc/develop/2008/07/18/1018367.shtml

awk 中length函数怎样进行变量赋值


awk的变量
?? awk提供两种变量:
?? (1) 内置变量
在引用时,不需要加$
?? (2) 自定义变量
awk中引用自定义变量必须在它前面加上标志符"$"。awk根据其在awk中第一次出现的形式和上下文确定其具体的数据类型。
当变量类型不确定时,awk默认其为字符串类型。这里有一个技巧:如果你要让你的awk程序知道你所使用的变量的明确类型,
你应当在在程序中给它赋初值。

root@dashazi:~# echo "123&&sdfsfdsdfsf;123s9d9fsdf12315677a1" | awk '{split($0,a,"[^0-9]") ; split($0,b,"[^a-zA-Z]") ; for(i in a) A=length(A)<length(a[i])?a[i]:A ; print A ; for(j in b) B=length(B)<length(b[j])?b[j]:B ; print B}'
12315677
sdfsfdsdfsf
代码一定要弄懂
split 函数
三目运算


(1)a:b:c:d:e:f:g:h:i
root@dashazi:~/dingxue/Clean# cat A2 |awk -F':' '{split($0,arr,":")}END{for(i=1;i<=NF;i++)printf("%s\n",arr[i])}'
a
b
c
d
e
f
g
h
i
(2)12:34:56
root@dashazi:~/dingxue/Clean# cat A3 | awk '{split($0,arr,":");print arr[1]}'
(3)76868&5676&435&43526&334&12312312&12321
root@dashazi:~/dingxue/Clean# cat A4 |awk '{print split($0, arr, "&")}'
7
(4) ping -I 172.17.47.191 127.0.0.1 -c 3 -q|awk 'match($0,"--- +([^ ]+)",a){s=a[1]}match($0,"([0-9]+%) +packet +loss",b){s=s" "b[1]}match($0,"rtt.*= +[^/]+/([^/]+)",c){s=s" "c[1]}END{print s}'
ping -I 172.17.47.191 127.0.0.1 -i 0.2 -c 3 -q |awk 'NR==1{ip=$2}NR==4{packet=$6}$1~/rtt/{RTA=$4}END{split(RTA,arr,"/");{print ip,packet,arr[2]}}'

 

posted @ 2018-01-07 14:50  zcmdxj  阅读(294)  评论(0编辑  收藏  举报