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. encodeURIComponent与encodeURI的区别

    encodeURIComponent()   -->把字符串编码为 URI 组件. encodeURI()                   -->把字符串编码为 URI. var te ...

  2. jquery checkBox的问题

    在新版的jquery中选择ckeckbox最好使用prop方法,否则会出现一些问题.比如手动点击取消,再使用代码全选或者反选时候就不好使啦!!!

  3. mysqlsla慢查询分析工具教程

    mysqlsla是一款帮助语句分析.过滤.和排序的功能,能够处理MySQL慢查询日志.二进制日志等.整体来说, 功能非常强大. 能制作SQL查询数据报表,分析包括执行频率, 数据量, 查询消耗等. 且 ...

  4. android应用activity中调出输入法后界面调整问题的解决

    在自己写的一个小应用中发现一个问题,当调出输入法后界面最下方的一个按钮被挤到了输入法的上面,这样很不美观,所以找了一下解决办法记录如下: 在AndroidManifest.xml文件中找到对应的act ...

  5. Get the item a SharePoint workflow task is associated with

    This is handy. SharePoint helpfully populates the meta data with the GUID of the list and the ID of  ...

  6. drupal CMS

    http://drupalchina.cn/ https://www.drupal.org

  7. 对.net orm工具Dapper在多数据库方面的优化

    Dapper是近2年异军突起的新ORM工具,它有ado.net般的高性能又有反射映射实体的灵活性,非常适合喜欢原生sql的程序员使用,而且它源码很小,十分轻便.我写本博客的目的不是为了介绍Dapper ...

  8. Linux学习笔记(4)-文本编辑器vi的使用

    vi的三种编辑模式 命令模式(Command mode) 在此模式下可以控制光标的移动,可以删除字符,删除行,还可以对某个段落进行复制和移动 输入模式(Insert mode) 只有在此模式下,可以输 ...

  9. wordpress换域名后无法登陆的解决方案

    第一步:登录到你的数据库管理页面,找到wp_options表: 第二步:将表中的siteurl和home字段的值修改为当前的新域名,siteurl值的修改和home值的修改同理.如下图:

  10. ExtJS4.2学习(五)表格渲染与复选框

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-10/174.html --------------- ...