利用赋值去重
data
http://www.sina.com.cn http://www.sina.com.cn ################ http://www.163.com.cn http://www.163.com.cn ################ http://www.163.com http://www.163.com ################
期望输出:
http://www.sina.com.cn ################ http://www.163.com.cn ################ http://www.163.com ################
脚本:
# 方法一:利用sed去掉空行,再使用awk筛选相同的行 sed '/^$/d' data | awk 'v!=$0;{v=$0}' # 方法二:NF作为pattern时可以判断该行是否为空行的条件 awk '$0!=v&&NF;NF{v=$0}' data # 或者 awk 'NF&&$0!=i{print;i=$0}' data
awk '$0!=v&&NF;NF{v=$0}' data 解析过程: 第一行,v=0或null,NF=1(为真),"$0!=v&&NF"条件为真,这里没有{action},默认打印该行;分号后面的NF也为真,把$0赋值给v=$0 第二行,v=1,NF为空,"$0!=v&&NF"条件为假,不满足条件,无任何动作;NF也为假,v保留值$0 第三行,v=NF,不执行打印,NF为真,把第3行的内容赋值给v,v值和第一行内容一样 以此类推,执行到#行,"$0!=v&&NF"条件为真,打印该行,并且把该行的值赋给v。。。。
*** 你必须十分努力,才能看起来毫不费力 ***