sed学习总结
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学习总结的更多相关文章
- sed学习笔记
sed是一个文本处理工具,可以根据给出的条件,自动对文本进行处理.在使用之前,需要知道的有三点:1. sed是逐行进行处理:2. sed不对原文件进行修改:3. sed默认是将处理后的内容打印到标准输 ...
- linux命令sed学习笔记
sed其实就是两个主要的知识点,那就是“怎么选择”和“怎么操作”!
- sed学习笔记整理
1.sed简介 sed (Stream Editor)是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处 ...
- 【转】sed 学习笔记
一 . sed 简介 1 . 功能 sed 是一种流编辑器,所谓流编辑器是指能够对来自文件或者管道的输入流进行基本的文本转换的工具,比方说查找替换删除等. 2 . 最简单的运作机制 sed ...
- sed学习[参考转载]
一.选项与参数: -n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者 ...
- SED 学习笔记
1. Sed简介 sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成 ...
- [shell] sed学习
Q:匹配内容有1没有a的行 echo -e "1a\n2b\n1b\n2a" | sed -n '/1/{/a/d;p}' echo -e "1a\n2b\n1b\n2a ...
- Linux-正则、grep、sed学习笔记
一.正则和grep 正则表达式的实现分成了两类: 基本正则表达式(BRE)和扩展的正则表达式(ERE). BRE 和 ERE 之间有什么区别呢?这是关于元字符的问题.BRE 可以辨别以下元字符: ^ ...
- 正则表达式sed学习(二)
sedsed是一个流编辑器,非交互式的编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space)接着用 sed 命令处理缓冲区的内容,处理完成 ...
随机推荐
- 经验之谈—让你看明确block
事实上我感觉不常常使用block的朋友.对block应该是比較陌生的,那么如今我们来扒开block的真面目,看看block的本质 普通的局部变量.block内部仅仅会引用它初始的值(block定义那一 ...
- python核心编程五——映像和集合
1.字典 不同意一个键相应多个值:当有键发生冲突(即.字典键反复赋值),取最后(近期)的赋值. >>> dict1 = {' foo':789, 'foo': 'xyz'} ...
- android图像处理系列之六--给图片添加边框(下)-图片叠加
前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式.前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以 ...
- 用Fiddle跟踪调试移动表单
简介:Fiddle,调试,移动表单 http://jingyan.baidu.com/article/925f8cb81e3a52c0dde05616.html
- Day6下午题解1
预计分数:100+?+30=130+? 实际分数:100+25+30=155 T1 https://www.luogu.org/problem/show?pid=T15920 DP裸题,用dp[i][ ...
- thinkphp 整合 swiftmailer 实现邮件发送
thinkphp swiftmailer(phpmailer) 文件夹结构 图 1 swiftmailer-phpmailer 将swiftmailer整合到thinkphp中.如上图 1 我下载的版 ...
- amazeui学习笔记一(开始使用4)--Web App 相关
amazeui学习笔记一(开始使用4)--Web App 相关 一.总结 1.桌面图标(Touch icon)解决方案:终极方案:link标签的rel和href属性: <link rel=&qu ...
- Java中接口继承泛型接口
在使用Mybatis做web开发时,每一个模块的数据持久层的接口都会定义:增删改查四个方法.我想为什么不新建一个Base接口来做所有数据持久层的父接口呢? 于是,我试验了一下,建立了一个泛型接口,里面 ...
- 【原创】基于pyautogui进行自动化测试
前期准备: python3.6 pyautogui pywinauto 以下代码实现内容: 1.打开记事本 2.记事本中输入This is a test 3.保存内容 4.退出进程 import py ...
- 详解javascript的深拷贝与浅拷贝
1. 认识深拷贝和浅拷贝 javascript中一般有按值传递和按引用传递两种复制,按值传递的是基本数据类型(Number,String,Boolean,Null,Undefined),一般存放于内存 ...