sed学习总结

sed工作流


测试文件:cat employee.txt

101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

sed命令语法


sed [options] {sed-commands} {input-file}  (单条命令)
sed [options] -f {sed-commands-in-a-file} {input-file} (脚本文件)
sed [options] -e {sed-command-1} -e {sed-command-2} {input-file} (多条命令)

sed打印输出


sed -n 'p'  employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager
sed  'p'  employee.txt
101,John Doe,CEO
101,John Doe,CEO
102,Jason Smith,IT Manager
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
104,Anand Ram,Developer
105,Jane Miller,Sales Manager
105,Jane Miller,Sales Manager
sed -n '2 p' employee.txt      仅输出第2行
sed -n '1,4 p' employee.txt 输出1到4行
sed -n '2,$ p' employee.txt 输出2到最后一行

匹配行


sed -n '1~2 p' employee.txt
101,John Doe,CEO
103,Raj Reddy,Sysadmin
105,Jane Miller,Sales Manager
1~2 匹配1,3,5,7……奇数行
2~2 匹配2,4,6,8……偶数行
1~2 匹配1,4,7,10……
1~2 匹配2,5,8,11……

模式输出


sed -n '/Jane/ p' employee.txt        输出与Jane匹配的行
sed -n '/Jason/,4 p' employee.txt 输出从第一个匹配Jason的行到第4行
sed -n '/Raj/,$ p' employee.txt 输出第一个匹配Raj的行到最后一行
sed -n '/Raj/,/Jane/ p' employee.txt 输出匹配Raj的行到匹配Jane的行
sed -n '/Jason/,+2 p' employee.txt 输出匹配Jason的行再输出之后两行

删除行(仅影响输出不作源文件修改)


sed '2 d' employee.txt                删除第2行
sed '1,4 d' employee.txt 删除1到4行
sed '2,$ d' employee.txt 删除2到最后一行
sed '1~2 d' employee.txt 删除奇数行
sed '/Manager/ d' employee.txt 删除匹配Manager的行
sed '/Jason/,4 d' employee.txt 删除匹配Jason的行到第4行
sed '/Raj/,$ d' employee.txt 删除匹配Raj的行到最后一行
sed '/Raj/,/Jane/ d' employee.txt 删除匹配Raj的行知道匹配Jane的行
sed '/Jason/,+2 d' employee.txt 删除第一个匹配Jason的行及之后两行
sed '/^$/ d' employee.txt 删除空行
sed '/^#/ d' employee.txt 删除#开头的行(注释行)

替换命令


语法

sed '[address-range|pattern-range] s/originalstring/replacement-string/[substitute-flags]' inputfile

实例

sed 's/Manager/Director/' employee.txt
sed '/Sales/s/Manager/Director/' employee.txt 在匹配Sales的行替换
sed 's/a/A/' employee.txt
sed 's/a/A/g' employee.txt 全局替换
sed 's/a/A/2' employee.txt 替换每行第2个a
sed -n 's/John/Johnny/p' employee.txt
sed 's/john/Johnny/i' employee.txt 忽略大小写

参考资料


[1]. Sed-and-Awk-101-Hacks.pdf

sed学习总结的更多相关文章

  1. sed学习笔记

    sed是一个文本处理工具,可以根据给出的条件,自动对文本进行处理.在使用之前,需要知道的有三点:1. sed是逐行进行处理:2. sed不对原文件进行修改:3. sed默认是将处理后的内容打印到标准输 ...

  2. linux命令sed学习笔记

    sed其实就是两个主要的知识点,那就是“怎么选择”和“怎么操作”!

  3. sed学习笔记整理

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

  4. 【转】sed 学习笔记

    一  .  sed 简介 1  .  功能 sed 是一种流编辑器,所谓流编辑器是指能够对来自文件或者管道的输入流进行基本的文本转换的工具,比方说查找替换删除等. 2  .  最简单的运作机制 sed ...

  5. sed学习[参考转载]

    一.选项与参数: -n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者 ...

  6. SED 学习笔记

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

  7. [shell] sed学习

    Q:匹配内容有1没有a的行 echo -e "1a\n2b\n1b\n2a" | sed -n '/1/{/a/d;p}' echo -e "1a\n2b\n1b\n2a ...

  8. Linux-正则、grep、sed学习笔记

    一.正则和grep 正则表达式的实现分成了两类: 基本正则表达式(BRE)和扩展的正则表达式(ERE). BRE 和 ERE 之间有什么区别呢?这是关于元字符的问题.BRE 可以辨别以下元字符: ^ ...

  9. 正则表达式sed学习(二)

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

随机推荐

  1. 下载编译 Android wear 源代码,尝试制作可穿戴设备功能

    体验 Android Wear 缘由: Android wear 代码公布已经非常久了.一直没有尝试,这里是个编译的过程和步骤,假设要尝试.本文假定读者已经有下载编译 Android  的经验,假设没 ...

  2. ajax嵌套ajax 可能出现问题 的解决办法

    ajax由于他的异步特性 在第一次请求中的循环中嵌套第二个ajax会数据会读不出来 第一种 描述:如果条件许可,把两次请求都放在服务端处理掉一起发回来,这些就在客户端只有一次ajax了 优点:代码放在 ...

  3. Logstash整合Elasticsearch

    1:启动Elasticsearch2:bin/logstash -e 'input { stdin { } } output { elasticsearch { host => localhos ...

  4. vuex-store模块化配置

    一.目录结构: src -> js -> modules 1. 在modules下新建文件夹,文件夹名称按模块功能命名 如: modules ---- home -> homeMod ...

  5. IIS发布asp.net mvc项目(asp.net core也是一样)

    因为之前都是利用其他的工具在linux上面进行发布,导致现在忘记了在IIS上面怎么发布,现在就记录下来,以防不时之需吧 第一步: 在vs里面进行项目发布:指定好发布的位置,点击发布就好了 第二步:右击 ...

  6. 使用PyCharm安装第三方库

    使用PyCharm安装第三方库是一种十分简单的做法,接下来我来演示一下在PyCharm上安装第三方库requess的操作流程. 首先,先看一下当第三方库未安装时的提示内容,在pycharm中新建pyt ...

  7. SQLITE数据表主键设置Id自增方法

    SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报  分类: S ...

  8. 20.SpringBoot 之 读取环境变量和绑定属性对象

    转自:https://blog.csdn.net/catoop/article/details/50548009

  9. 1.1 Introduction中 Guarantees官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Guarantees Kafka的保证(Guarantees) At a high- ...

  10. seaJS注意点:

    1.require 是同步往下执行,require.async 则是异步回调执行.require.async 一般用来加载可延迟异步加载的模块.