sed学习笔记(1) - 入门知识
sed是一种在线编辑器,它一次处理一行内容。
处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
文件内容并没有改变,除非你使用重定向存储输出。
在处理方式上,sed与awk很类似,都是逐行读取。sed在批量处理文本时很有用,常用来做批量替换。
awk适合用来处理表格类的数据,而sed则适合用来处理不规则的数据
从语法上看,sed与awk都很相似:
- sed [options] 'command' file(s)
- sed [options] -f scriptfile file(s)
先看一些最简单的sed例子:
先创建一个测试文件sed.txt,内容如下:
- 1034 7:26
- 1034 7:27
- 1101 7:32
- 1006 7:45
- 1012 7:46
- 1028 7:49
- 1051 7:51
- 1029 7:57
- 1042 7:59
- 1008 8:01
- 1052 8:05
- 1005 8:12
- 1005 8:13
1.打印文件某一行
- sed -n '3p' sed.txt
输出:
- 1101 7:32
说明:上面的程序打印出了文档的第三行。-n选项会禁止默认的输出,如果不使用,将会打印出整个文件。sed默认会将每一行都输出到标准输出设备上,此项关闭了这个属性。p用于将模式空间中的内容输出到标准输出设备中。在这个例子中,3表示的是第三行,当第三行进入到模式空间后,就会输出到标准输出设备上。
上面的程序严格来说是有效率问题的,如果我们的sed.txt有一千万行,上面的程序在输出第三行后仍然会扫描余下的行,这样会很慢。改进一下:
- sed -n '3p;3q' sed.txt
或者:
- sed -n '3{p;q;}' sed.txt
要用awk来实现上面的功能,可以用下面的代码:
- awk 'NR==3' sed.txt
当然,为了提高效率,可以如下改进:
- awk 'NR==3{print;exit;}' sed.txt
2.打印文件的某几行
- sed -n '3,5p:5q' sed.txt
输出:
- 1101 7:32
- 1006 7:45
- 1012 7:46
说明:上面的程序打印出了文档的第3-5行。3,5表示的是打印的范围。
用awk来实现如下:
- awk 'NR>=3&&NR<=5' sed.txt
更高效一点:
- awk '{if(NR>=3&&NR<=5){print}else if(NR>5){exit}}' sed.txt
3.打印整个文件
- sed '' sed.txt
输出:
- 1034 7:26
- 1034 7:27
- 1101 7:32
- 1006 7:45
- 1012 7:46
- 1028 7:49
- 1051 7:51
- 1029 7:57
- 1042 7:59
- 1008 8:01
- 1052 8:05
- 1005 8:12
- 1005 8:13
说明:当command什么都不写,也没有指定-n时,sed会取出每一行输出。
awk的实现如下:
- awk '{print}' sed.txt
sed学习笔记(1) - 入门知识相关推荐
- javaSE学习笔记01 入门篇
javaSE学习笔记01 入门篇 java语言概述 Java背景知识 java是 美国 sun 公司 在1995年推出的一门计算机高级编程语言. java早期称为Oak(橡树),后期改名为Java. ...
- HTML5学习笔记 —— JavaScript基础知识
HTML5学习笔记 -- JavaScript基础知识 标签: html5javascriptweb前端 2017-05-11 21:51 883人阅读 评论(0) 收藏 举报 分类: JavaScr ...
- mybatis学习笔记(3)-入门程序一
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...
- nginx学习笔记-01nginx入门,环境搭建,常见命令
nginx学习笔记-01nginx入门,环境搭建,常见命令 文章目录 nginx学习笔记-01nginx入门,环境搭建,常见命令 1.nginx的基本概念 2.nginx的安装,常用命令和配置文件 3 ...
- php基础教学笔记,php学习笔记:基础知识
php学习笔记:基础知识 2.每行结尾不允许有多余的空格 3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的 4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其 ...
- React学习笔记:入门案例
React学习笔记:入门案例 React 起源于 Facebook 内部项目,因为市场上所有 JavaScript MVC 框架都不令人满意,公司就决定自己写一套,用来架设 Instagram 的网站 ...
- 数据挖掘学习笔记 5 线性回归知识及预测糖尿病实例
#2018-03-21 16:45:01 March Wednesday the 12 week, the 080 day SZ SSMR http://blog.csdn.net/eastmount ...
- Linux操作系统学习笔记【入门必备】
Linux操作系统学习笔记[入门必备] 文章目录 Linux操作系统学习笔记[入门必备] 1.Linux入门 2.Linux目录结构 3.远程登录 3.1 远程登录Linux-Xshell5 3.2 ...
- JavaScript学习笔记之入门篇
JavaScript学习笔记之入门篇 JavaScript引入 1. 页面级 js: 2. 外部js文件: JavaScript变量 1. 变量的作用: 2. 声明变量: 3. 变量赋值: 4. 单一 ...
- 【学习笔记--FMCW基础知识】
学习笔记--FMCW基础知识 前言 mmWave测距原理 mmWave区分多个物体 mmWave的距离分辨率(Range Solution) mmWave的最大测量距离 前言 由于工作原因需要了解TI ...
最新文章
- 2017年含金量最高的机器学习技能或知识有哪些? 翻译 2017年10月20日 14:22:44 标签: 机器学习 / quora 7504 原文:As of 2017, what set of
- Cheat_Sheet ---Keras、Matlab、Matplotlib、Numpy、Pandas、Scikit-Learn、SciPy
- Struts2 自定义拦截器(easy example)
- webpack那些事儿
- HIbernate抽象出通用方法
- 服务器支持http tcp,Nginx配置http和tcp(示例代码)
- iphone小圆点在哪儿设置_iPhone终于自带长截屏了?苹果手机这些截图方式,你用过几种?...
- 有的时候print函数不会立即打印的解决办法(flush=True)
- 游戏王抽卡模拟器(概率计算器)
- sscom 中文显示 乱码_SSM框架中的中文乱码问题
- canvas实现圆饼图,柱状图,折线图(满满的干货)
- Style之flag标签
- 电脑CPU型号是什么意思?
- 一级域名与二级域名之间的区别
- 【ME909】华为ME909 4G LTE模块在树莓派下通过minicom进行发送短信演示
- linux cp: 略过目录
- 服务器系统xb21cn,Office2010/2016精简三合一版(xb21cn-0901版)
- 快乐大掌柜源码--快乐大掌柜系统开发模式介绍
- python识别图片中数字_Python图像处理之图片验证码识别
- 【锐捷交换】接入交换机配置DHCP Snooping + IP Source guard + ARP-check