awk 分析
来源:互联网 发布:圣思园java 百度云 编辑:程序博客网 时间:2024/04/29 05:30
urfile 文件如下
PBCSPOFT0101 0
PBCSPOFT0101 96
PBCSPOFT0102 0
PBCSPOFT0102 6
PBCSPOFT0103 0
PBCSPOFT0103 8
PBCSPOFT0104 0
PBCSPOFT0105 0
PBCSPOFT0106 0
PBCSPOFT0107 0
PBCSPOFT0107 10
PBCSPOFT0108 0
我想删除第一个字段重复的且第二个字段为0的行,结果应该如下
PBCSPOFT0101 96
PBCSPOFT0102 6
PBCSPOFT0103 8
PBCSPOFT0104 0
PBCSPOFT0105 0
PBCSPOFT0106 0
PBCSPOFT0107 10
PBCSPOFT0108 0
学习后,对黑哥的解决思路的分析,分享给大家,感谢朋友们的回答!!!
awk 'NR==FNR{a[$1]++;next}$2!=0||a[$1]==1' urfile urfile
|--^--| |--^--| |-^| |-^-| |-^-----| |--^-| ---^--
| | | | | | | |_第2次读数据文件
| | | | | | |_第1次读数据文件
| | | | | |_以第一个字段为下标的数组的值为1,
| | | | | 即本行的第一个字段的值在数据文件中
| | | | | 是唯一的,这时也执行打印数据的默认
| | | | | 操作
| | | | |_第2个字段的值不是0时执行打印数据的默认操作
| | | |-----^--------|
| | | |_此时NR!=FNR,即第2次读数据文件时,本判断
| | | 才开始起起作用
| | |_到下一行,本行记录后面的匹配都被忽略掉,这个很重
| | 要,因为没有的话后面的匹配会被执行。
| |_以第一个字段为下标的数组记录每一个第一个字段值相同的行
| 数,例如第一个字段值为 PBCSPOFT0107 的记录行数为2,那么
| a[PBCSPOFT0107]的值就为2,第一个字段值为 PBCSPOFT0106
| 的记录行数为1,那么a[PBCSPOFT0106]的值就为1.
|_NR:awk开始执行程序后所读取的数据行数
FNR:与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计
PBCSPOFT0101 0
PBCSPOFT0101 96
PBCSPOFT0102 0
PBCSPOFT0102 6
PBCSPOFT0103 0
PBCSPOFT0103 8
PBCSPOFT0104 0
PBCSPOFT0105 0
PBCSPOFT0106 0
PBCSPOFT0107 0
PBCSPOFT0107 10
PBCSPOFT0108 0
我想删除第一个字段重复的且第二个字段为0的行,结果应该如下
PBCSPOFT0101 96
PBCSPOFT0102 6
PBCSPOFT0103 8
PBCSPOFT0104 0
PBCSPOFT0105 0
PBCSPOFT0106 0
PBCSPOFT0107 10
PBCSPOFT0108 0
学习后,对黑哥的解决思路的分析,分享给大家,感谢朋友们的回答!!!
awk 'NR==FNR{a[$1]++;next}$2!=0||a[$1]==1' urfile urfile
|--^--| |--^--| |-^| |-^-| |-^-----| |--^-| ---^--
| | | | | | | |_第2次读数据文件
| | | | | | |_第1次读数据文件
| | | | | |_以第一个字段为下标的数组的值为1,
| | | | | 即本行的第一个字段的值在数据文件中
| | | | | 是唯一的,这时也执行打印数据的默认
| | | | | 操作
| | | | |_第2个字段的值不是0时执行打印数据的默认操作
| | | |-----^--------|
| | | |_此时NR!=FNR,即第2次读数据文件时,本判断
| | | 才开始起起作用
| | |_到下一行,本行记录后面的匹配都被忽略掉,这个很重
| | 要,因为没有的话后面的匹配会被执行。
| |_以第一个字段为下标的数组记录每一个第一个字段值相同的行
| 数,例如第一个字段值为 PBCSPOFT0107 的记录行数为2,那么
| a[PBCSPOFT0107]的值就为2,第一个字段值为 PBCSPOFT0106
| 的记录行数为1,那么a[PBCSPOFT0106]的值就为1.
|_NR:awk开始执行程序后所读取的数据行数
FNR:与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计
awk 'NR==FNR&&!($1 in array)&&$2!=0{array[$1]=$0}NR>FNR&&!($1 in array){array[$1]=$0}END{for(i in array){print array[i]}}' test92.txt test92.txt
- awk 分析
- Awk分析
- awk分析nginx日志
- awk分析1
- awk分析2
- 日志分析awk
- awk 实例分析
- AWK文本分析工具
- awk - 文件分析
- awk 例子分析
- AWK日志分析实战
- awk文本分析工具
- awk文本分析
- awk--文本分析的ak47
- AWK Linux文本分析工具
- sed结构分析 + awk结构分析
- Mysql分析-awk+Threads分析状态
- inux awk命令详解 awk文本分析工具
- WisKey的眼神
- 《GOF设计模式》—创建型模式—Delphi源码示例:未基于模式的迷宫
- Windows下后缀为*.zip.001文件的解压方法
- 《GOF设计模式》—创建型模式—Delphi源码示例:基于创建型模式的迷宫
- 高德纳的二十年计划
- awk 分析
- 高德纳:盖茨亲自为他的书做推广
- 今天决定去做现货
- 《GOF设计模式》—外观(FACADE)—Delphi源码示例:基于外观模式的编译子系统
- HTTP POST GET 本质区别详解
- 设计模式之我见:外观模式
- 深入理解Java序列化中的SerialVersionUid
- 有关datagrid控件显示的drag a column header here to group by that column
- 设计模式之我见:适配器模式