linux sed命令互换包含指定关键字的行

a.txt内容如下:

111
222
baidu
333
444
google
555
666

交换包含baidu和包含google的行,得到:

111
222
google
333
444
baidu
555
666

代码1:

sed '/baidu/{:a;N;/google/!ba;s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}' a.txt

代码1的执行过程:

代码2:

sed '/baidu/{:a;N;/google/{s/\(^[^\n]*\)\(.*\)\(\n\)\([^\n]*$\)/\4\2\3\1/;t};ba}' a.txt 

代码2的执行过程:

代码1和代码2的特点:
1、不需要事先知道baidu和google分别在第几行。
2、不管baidu和google是否相邻,都可以正常处理。
3、如果先出现google后出现baidu,命令需要相应的做调整。

(0)

相关推荐

  • wps表格怎么删除包含指定内容的行?

    wps表格怎么删除包含指定内容的行?已有的数据表格中有很多不想要的数据行,怎么样将这些行或单元格一次性删除掉呢?下面我们一起来看看吧 已有的数据表格中有很多不想要的数据行,怎么样将这些行或单元格一次性 ...

  • linux sed命令详解

    sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送 ...

  • 轻松学会文本处理工具之二 linux sed命令

    sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上 ...

  • Linux中使用sed命令替换字符串小结

    最近写了几个小脚本用到了sed命令,学了一下,顺便记下 sed替换的基本语法为: 复制代码 代码如下: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字 ...

  • 什么是Linux中的sed命令

    <Linux就该这么学>给同学们介绍一个高效命令:sed(stream editor)是一款高效的流编辑器,它一次只处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为" ...

  • Linux下的sed命令使用详解

    sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"pattern space,接着用sed命令 ...

  • Linux下sed命令使用全解析

    一.Sed简介 Sed:Stream Editor 流式编辑器 又称行编辑器,每次只编辑一行.Sed工作是在"模式空间"中进行的,并不操作源文件.对源文件无危害. 二.Sed使用格 ...

  • linux系统怎么查看文件指定行的数据?

    在linux系统中,从文件中查找包含某关键字的内容,可通过 cat filename | grep "xxx"等类似命令来实现,但如果查看文件中指定行号的内容,就需要以下命令来实现。 1、通过命令ca ...

  • Centos查找目录下所有文件中是否包含指定字符串的方法

    linux下查找目录下的所有文件中是否包含指定字符串 find . | xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 fi ...