当前位置: 技术问答>linux和unix
帮忙看一个shell怎么写
来源: 互联网 发布时间:2017-03-21
本文导语: 我的文件里的数据是这样的 99998|Stacy|Huang|StacyHuang@gmail.com|07141985|2058|7013062718|STU 10020|Jame|Sccot|JameSccot@gmail.com|12271972|3680|7012220656|STU 10020|Jame|Sccot|JameSccot@gmail.com|12271972|3680|7012220656|FAC ...... 需求是如果存在前面字段是相...
我的文件里的数据是这样的
99998|Stacy|Huang|StacyHuang@gmail.com|07141985|2058|7013062718|STU
10020|Jame|Sccot|JameSccot@gmail.com|12271972|3680|7012220656|STU
10020|Jame|Sccot|JameSccot@gmail.com|12271972|3680|7012220656|FAC
......
需求是如果存在前面字段是相同的,最后一个是不同的记录时,只要是FAC的记录,但有的时候只有末尾是STU的或只有FAC的记录,并没有前面重复的记录比如第一条,如何用SHELL脚本获得所有的数据
感觉用awk可以获取$8的值但不知道怎么和前一行该列的值比较。没事思路。麻烦高手给给思路也好。
99998|Stacy|Huang|StacyHuang@gmail.com|07141985|2058|7013062718|STU
10020|Jame|Sccot|JameSccot@gmail.com|12271972|3680|7012220656|STU
10020|Jame|Sccot|JameSccot@gmail.com|12271972|3680|7012220656|FAC
......
需求是如果存在前面字段是相同的,最后一个是不同的记录时,只要是FAC的记录,但有的时候只有末尾是STU的或只有FAC的记录,并没有前面重复的记录比如第一条,如何用SHELL脚本获得所有的数据
感觉用awk可以获取$8的值但不知道怎么和前一行该列的值比较。没事思路。麻烦高手给给思路也好。
|
[nicenight@CSDN ~]$ awk -F'|' 'BEGIN{last_flag="FAC"} {if ($NF == "FAC") print $0; if (last_flag == "FAC" && last_id == $1) next;if (last_flag != "FAC" && last_id != $1) print last_line; last_line=$0; last_id=$1; last_flag=$NF}END { if (last_flag != "FAC") print last_line;}'
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!