- 论坛徽章:
- 60
|
本帖最后由 reyleon 于 2015-11-26 19:08 编辑
目测第一个问题是这样的:
awk '$NF ~ /\./gsub(/"/,""){print $NF}'
首先, 执行 $NF~/./ , 得到布尔值 0 或 1 , 执行 gsub(/"/,"") 得到 0 或 替换到的次数, 如 替换5次, 就是5 , 替换2次就是2
然后, 两个数值结合为字符串
再执行 $NF ~"得到的这个字符串", 返回0 或1
最后执行 {} 这个动作.
如:
[root@localhost ~]# echo "2013/1/1 23:50:36 客服热线021-61305656。" | awk '$NF~/\./gsub(/\//,"") { print }' # $NF~/\./ , 匹配不到, 返回0 , gsub(/\//,"") 返回的值为2,有两个/被替换了. 然后结合变为了 $NF~"02", $NF~"02" 成功, 则打印
201311 23:50:36 客服热线021-61305656。
[root@localhost ~]# echo "2013/1/1 23:50:36 客服热线121-61305656。" | awk '$NF~/\./gsub(/\//,"") { print }' # 这里我把 "客服热线021" 改为 "客服热线121" ,$NF~"02" 失败, 就不执行 print 了.
[root@localhost ~]#
[root@localhost ~]# [/code]
再比如:
[code][root@localhost ~]# seq 10 | awk '/\./' # 没有输出, 因为不匹配, 返回0
[root@localhost ~]#
[root@localhost ~]# seq 10 | awk '/\./0' # 这里是比较奇怪的, 结合的是字符串 00 , 而不是数字, 而且如果 seq 10 | awk '$0~/\./ 0' 结果就不同了. 所以, ....自己去意淫
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# seq 10 | awk '0'
[root@localhost ~]# seq 10 | awk '"0"'
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]#
[root@localhost ~]# seq 10 | awk '$0~/\./0'
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# seq 10 | awk '$0~/\./0'
[root@localhost ~]# seq 10 | awk '/\./0'
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# seq 10 | awk '$0~/\./ 0'
[root@localhost ~]# seq 10 | awk '$0~/\./ 1'
[root@localhost ~]# seq -w 10 | awk '$0~/\./1'
[root@localhost ~]# seq -w 10 | awk '/\./1'
01
02
03
04
05
06
07
08
09
10
[root@localhost ~]# seq -w 10 | awk '00'
[root@localhost ~]# seq -w 10 | awk '"00"'
01
02
03
04
05
06
07
08
09
10
[root@localhost ~]#
以上纯属 YY :mrgreen::mrgreen::mrgreen::mrgreen:
楼主, 你蛋疼不? 代码又不规范的写
妈蛋, 还要禁用表情
;P |
|