- 论坛徽章:
- 0
|
回复 2# wh7211
大神,一直跟着你学习上来,理解了好久代码,有一个地方不太明确,望您指点
整个代码如下:
- awk -F"[_ ]+" '!a[$1$2$3$4]++{if(d){print d};b=$6;c=$7;d=$0;next}{if(c<$7){b=$6;c=$7;d=$0}else if(c==$7){if(b<$6){b=$6;c=$7;d=$0}}}END{if(d){print d}' 1.txt
复制代码 知识点:
1. -F"[_ ]+" : 指定多个分隔符,分别是_和空格
2. !a[$1$2$3$4]++{if(d){print d};b=$6;c=$7;d=$0;next
将前四列作为数组a的下标,若第一次出现,则为真,执行后面的action,对b,c,d进行赋值, next则用来跳过后面的一系列操作
3. {if(c<$7){b=$6;c=$7;d=$0}else if(c==$7){if(b<$6){b=$6;c=$7;d=$0}}}
若非第一次出现,则为假,按顺序执行上面的操作,进行一系列的替换
4. END{if(d){print d}'
最后打印
疑问:想问这个代码是什么作用呢? {if(d){print d}
我试过多种方法,去掉以后是实现不了的,但是不太理解作用是什么
|
|