sed之仅打印相邻重复的行

cat file 
aaa
bbb
bbb
ccc
ddd
eee
eee
fff
 
只显示重复的行:
bbb
bbb
eee
eee
 
sed -n ':a;N;/\(.\+\)\n\1/!D;p' file
[解析]
读取下一行,如果两行内容一样的打印,然后跳转命令行尾,不执行 D ,如果没匹配到就 D 删除第一行,跳转去命令行首继续执行。
 
awk 'i{if($0==x){print x"\n"x;i=0}}{x=$0;i=1}' file <(echo)
 
 
以上的例子仅局限在两行重复的情况,那么有多行重复的情况呢?比如:
cat file
aaa
bbb
bbb
bbb
ddd
eee
eee
 
要得到:
bbb
bbb
bbb
eee
eee
 
sed -n '$!N;/\(.*\)\n\1$/{P;ba};x;/\(.*\)\n\1$/P;x;:a;h;D'   file
 
[解析]
整体的思路是判断如果是相邻两行重复的话,就 P 打印第一行,然后把当前的 pattern space 中,当相邻行不匹配重复时,x 交换两个空间的内容,把 hold space 里的内容(就是上一行的 pattern space里的内容后拷贝到的 hold space),再匹配看是否两行重复,如果重复的话就打印。这样就把连续的相邻的行打印出来,避免了因为前两行相同,而第三行和第四行不匹配的话,就无法 打印第三行的内容了。这个思路很值得借鉴。另外该代码可以优化为
sed -n '$!N;/\(.*\)\n\1$/{P;ba};x;//P;x;:a;h;D'  file
//P 就可以省略匹配的内容。
 
REF:
http://blog.chinaunix.net/uid-10540984-id-3034540.html

sed找到重复的行的更多相关文章

  1. matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置

    找到了2个函数:unique和ismember 1. 去掉其中的重复行:unique 例子: IDX = [,,; ,,; ,,; ,,; ,,; ,,]; classNo = unique(IDX, ...

  2. Sql Server Analysis Service 处理时找到重复的属性键、找不到属性键错误(转载)

    这是两个非常常见的SSAS处理异常,网上也能找到很多文章讲解决办法,但很少见关于异常原因的分析,先来看看第一个" OLAP 存储引擎中存在错误: 处理时找到重复的属性键",一个维度 ...

  3. 关于重复记录和外部 ID (CRM导入提示已找到重复的查找引用)

    http://docs.huihoo.com/oracle/crm-on-demand/21/local/html/Release21_SimpleChinese/index.htm?toc.htm? ...

  4. sed 删除最后几行 和删除指定行 awk使用

    sed 删除最后几行 和删除指定行   转载原文链接:http://blog.51cto.com/lspgyy/1305489 sed 想删除文件中的指定行,是可以用行号指定也可以用RE来匹配的. 删 ...

  5. linux(centos8):用uniq去除文本中重复的行(去重)

    一,uniq命令的用途 1, 作用: 从输入文件或标准输入中找到相邻的匹配行, 并写入到输出文件或标准输出 2, 使用时通常会搭配sort使用 说明:刘宏缔的架构森林是一个专注架构的博客,地址:htt ...

  6. awk过滤统计不重复的行

    awk以‘\t’为分隔符区分列 cat logs | grep IconsendRedirect | grep 1752 | awk -F'\t' '{print $8}'| wc -l awk过滤统 ...

  7. EasyUI datagrid 删除的时候无法正确找到重复记录row index的问题

    EasyUI datagrid 删除的时候无法正确找到重复记录row index的问题: 如果无法正确找到重复记录的row index,就需要进行注意添加的时候所进行的 操作:如果添加的时候就是添加的 ...

  8. LeetCode 287. Find the Duplicate Number (找到重复的数字)

    Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...

  9. RDLC 设置表的重复标题行(在每页中显示标题行)

    在Tablix 属性对话框中勾选“在每一页上重复标题行”及“滚动时保持标题可见”结果没有用. 如果您使用的是一个“表”式布局,有一个简单的方法,可以尝试以下四个步骤: 1.在分组窗格中,单击窗格上的小 ...

随机推荐

  1. DTcms手机版使用余额支付 提示信息跳转到PC版的错误。以及提交订单不打开新页面

    手机版使用余额支付 提示信息跳转到PC版的错误 引起错误的原因是中间需要提交到DTcms.Web\api\payment\balance\index.aspx去处理 导致BasePage.cs中的li ...

  2. Couchbase上发布的关于NoSQL的技术论文

    Couchbase是CouchDB与Membase两个NoSQL数据库相结合的产物,本文推荐的是Couchbase官方发表的一篇论文,命名为<NoSQL Database Technology& ...

  3. 我的第一个canvas的作品:漫画对白编辑器

    背景:一直都对canvas挺有有兴趣的,之前刚刚看了<HTML5 CANVAS基础教程>,写了篇读书笔记. 起因:老婆发来一张最近比较热的漫画图(友谊的小船说翻就翻什么的).这种漫画,经常 ...

  4. 思道OA PK 通达OA 同场竞技 谁与争锋

    技术架构 思道OA 通达OA 开发语言 微软ASP.NET 4.0 PHP开源脚本语言 64位平台 64位 32位 数据库 SQL Server大数据库 MySQL开源数据库 官网下载 下载地址 下载 ...

  5. java 中的异常处理

    一. 异常的概念和Java异常体系结构  异常是程序运行过程中出现的错误.本文主要讲授的是Java语言的异常处理.Java语言的异常处理框架,     是Java语言健壮性的一个重要体现. Java把 ...

  6. EXTJS 4.2 资料 控件之checkboxgroup的用法(静态数据)

    1.页面 1.1点击‘横幅’,需要动态显示隐藏文本框 { xtype: 'fieldset', title: '指定附加图&横幅设置', collapsible: true, items: [ ...

  7. Netty 4.0 demo

    netty是一个异步,事件驱动的网络编程框架&工具,使用netty,可以快速开发从可维护,高性能的协议服务和客户端应用.是一个继mina之后,一个非常受欢迎的nio网络框架 netty4.x和 ...

  8. HttpWebRequest

    同步请求=====================================================================================  byte[] da ...

  9. [SQL SERVER系列]之常用函数和开窗函数介绍及实例

    本文主要介绍SQL SERVER数据库中一些常用的系统函数及其SQL SERVER 2005以上支持的开窗函数. 1.常用函数 --从字符串右边截取指定字符数 select RIGHT('HELLO' ...

  10. ng-blur失去焦点执行事件

    <label class="item item-input item-stacked-label"> <span class="input-label& ...