Sed常用功能个人整理
Sed常用功能个人整理
Sed对1G以下的数据效率很高这里介绍一些个人在工作中遇到的sed问题
- 1.查找字段
以文章test.txt为例:
ID type old new
A01_1 1_34189552 0|0 0|0
A01_2 1_65117762 1|0 1|0
A01_3 1_70543349 0|0 0|0
A01_4 1_77765794 0|1 0|1
A01_5 1_109674087 0|1 0|1
A01_6 1_194530914 0|0 0|0
A01_7 1_224812701 0|0 0|0
A01_8 2_3645429 1|0 1|0
A01_9 2_21527764 0|0 0|0
A01_10 2_28792335 0|0 0|0
A01_11 2_142074734 0|0 0|0
单个查找,查找字段以p结尾,例如:
sed -n '/77765794/p' test.txt
>结果:
A01_9672 1_77765794 0|1 0|1
* 若不加n则会输出 查询结果+test.txt文本内容(与-e输出相同):
ID type old new
A01_1 1_34189552 0|0 0|0
A01_2 1_65117762 1|0 1|0
A01_3 1_70543349 0|0 0|0
A01_4 1_77765794 0|1 0|1
A01_4 1_77765794 0|1 0|1#会输出两次
A01_5 1_109674087 0|1 0|1
A01_6 1_194530914 0|0 0|0
A01_7 1_224812701 0|0 0|0
A01_8 2_3645429 1|0 1|0
A01_9 2_21527764 0|0 0|0
A01_10 2_28792335 0|0 0|0
A01_11 2_142074734 0|0 0|0
指定行输出
*sed -n 'star,end p' file 包含star和end行,$表示尾行
sed -n '1p' test.txt
ID type old new
sed -n '1,2p' test.txt
ID type old new
A01_1 1_34189552 0|0 0|0
sed -n '1p;3p' test.txt # 输出多行
sed -n '{1p;3p}' test.txt # 用分号来隔离多个操作(如果有定址条件,则应该使用{ }括起来)
ID type old new
A01_2 1_65117762 1|0 1|0
多个查找,以 ‘\|’ 分割关键字
sed -n '/34189552\|70543349/p' test.txt
结果如下:
A01_1 1_34189552 0|0 0|0
A01_3 1_70543349 0|0 0|0
*这里必须加''引号,不然不返回任何值
前后替换
sed -e 's/1_109674087/_&_/' test.txt # 用&替代整个查找字符串
ID type old new
A01_1 1_34189552 0|0 0|0
A01_2 1_65117762 1|0 1|0
A01_3 1_70543349 0|0 0|0
A01_4 1_77765794 0|1 0|1
A01_5 _1_109674087_ 0|1 0|1
A01_6 1_194530914 0|0 0|0
A01_7 1_224812701 0|0 0|0
A01_8 2_3645429 1|0 1|0
A01_9 2_21527764 0|0 0|0
A01_10 2_28792335 0|0 0|0
A01_11 2_142074734 0|0 0|0
*注意Linux下shell的正则表达式与python支持的字符有所不同
正则表达式支持情况
- 2.替换字段
s/被替换内容/替换内容/
sed -e 's/1_65117762/2_222/' test.txt
*这里使用-n不输出,需要使用-e
ID type old new
A01_1 1_34189552 0|0 0|0
A01_2 2_222 1|0 1|0 # 不会出现两次,直接显示替换的内容
A01_3 1_70543349 0|0 0|0
A01_4 1_77765794 0|1 0|1
A01_5 1_109674087 0|1 0|1
A01_6 1_194530914 0|0 0|0
A01_7 1_224812701 0|0 0|0
A01_8 2_3645429 1|0 1|0
A01_9 2_21527764 0|0 0|0
A01_10 2_28792335 0|0 0|0
A01_11 2_142074734 0|0 0|0
替换两个字符中间的内容
*这里需要使用 -r:启用扩展的正则表达式,若与其他选项一起使用,应作为首个选项
sed -r 's/(A01_11).*(0|0)/\1 2_222 \2/g' test.txt
*这里的\1 代指第一个括号的内容 \2代指第二个括号的内容
结果如下:
ID type old new
A01_1 1_34189552 0|0 0|0
A01_2 1_65117762 1|0 1|0
A01_3 1_70543349 0|0 0|0
A01_4 1_77765794 0|1 0|1
A01_5 1_109674087 0|1 0|1
A01_6 1_194530914 0|0 0|0
A01_7 1_224812701 0|0 0|0
A01_8 2_3645429 1|0 1|0
A01_9 2_21527764 0|0 0|0
A01_10 2_28792335 0|0 0|0
A01_11 2_222 0 # 将最后一个中间字符改为' 2_222 '
指定需要替换的行和第几个
sed -e '2s/0/o/3' test.txt
将第2行第3个0替换成o
ID type old new
A01_1 1_34189552 0|o 0|0 # 0被替换成了o
A01_2 1_65117762 1|0 1|0
A01_3 1_70543349 0|0 0|0
A01_4 1_77765794 0|1 0|1
A01_5 1_109674087 0|1 0|1
A01_6 1_194530914 0|0 0|0
A01_7 1_224812701 0|0 0|0
A01_8 2_3645429 1|0 1|0
A01_9 2_21527764 0|0 0|0
A01_10 2_28792335 0|0 0|0
A01_11 2_142074734 0|0 0|0
- 3.删除字段
删除字段需要使用关键字d,sed -e /内容/d file
sed -e ' /1_34189552/d' test.txt
结果如下:
ID type old new
A01_2 1_65117762 1|0 1|0
A01_3 1_70543349 0|0 0|0
A01_4 1_77765794 0|1 0|1
A01_5 1_109674087 0|1 0|1
A01_6 1_194530914 0|0 0|0
A01_7 1_224812701 0|0 0|0
A01_8 2_3645429 1|0 1|0
A01_9 2_21527764 0|0 0|0
A01_10 2_28792335 0|0 0|0
A01_11 2_142074734 0|0 0|0
指定行删除
sed -e '$d' test.txt
*注意有些表达式可以不加''引号,带有正则的表达式必须加引号
ID type old new
A01_1 1_34189552 0|0 0|0
A01_2 1_65117762 1|0 1|0
A01_3 1_70543349 0|0 0|0
A01_4 1_77765794 0|1 0|1
A01_5 1_109674087 0|1 0|1
A01_6 1_194530914 0|0 0|0
A01_7 1_224812701 0|0 0|0
A01_8 2_3645429 1|0 1|0
A01_9 2_21527764 0|0 0|0
A01_10 2_28792335 0|0 0|0
其他操作
删除所有空行
sed '/^$/d' a.txt
删除多行
sed '/2_28792335/d;/2_3645429/d' a.txt
0人点赞
Sed常用功能个人整理的更多相关文章
- IOS开发-OC学习-常用功能代码片段整理
IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...
- ROS(indigo)机器人操作系统学习资料和常用功能包汇总整理(ubuntu14.04LTS)
ROS(indigo)机器人操作系统学习资料和常用功能包汇总整理(ubuntu14.04LTS) 1. 网站资源: ROSwiki官网:http://wiki.ros.org/cn GitHub ...
- linux 常用命令--------雪松整理
linux 常用命令--------雪松整理 博客: http://hi.baidu.com/quanzhou722/blog错误在所难免,还望指正!========================= ...
- .NET平台常用的框架整理
基于.NET平台常用的框架整理 DotNet | 2016-03-31 17:13 (点击上方蓝字,可快速关注我们) 来源:天使不哭 链接:http://www.cnblogs.com/hgmyz/p ...
- iOS 常用三方类库整理
iOS 常用三方类库整理 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://gi ...
- JavaScript 常用功能总结
小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...
- 常用js方法整理common.js
项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data ...
- Keil的使用方法 - 常用功能(二)
Ⅰ.概述 上一篇文章是总结关于Keil使用方法-常用功能(一),关于(文件和编译)工具栏每一个按钮的功能描述和快捷键的使用. 我将每一篇Keil使用方法的文章都汇总在一起,回顾前面的总结请点击下面的链 ...
- 项目中常用功能,如:流媒体、健康数据(步数等)等-b
整理iOS开发中使用的各种流媒体和常用的高级功能.由于时间关系,目前只写了一部分功能,全部都采用的是系统方法,没用第三方,截图如下: screen1.png screen2.png 个人比较懒,不爱多 ...
随机推荐
- Distributed | ZooKeeper
ZooKeeper与之前看的论文不太一样,它主要是描述了一个分布式协调服务,提供了wait-free的api,可以让用户自己设计要求更高的原语.通过Zab协议保证sever之间的一致性,同时让读请求在 ...
- Day1---Java 基本数据类型 - 四类八种 --九五小庞
一.Java四大数据类型分类 1.整型 byte .short .int .long 2.浮点型 float . double 3.字符型 char 4.布尔型 boolean 二.八种基本数据类型 ...
- 带你全面认识CMMI V2.0(五)——改进
改进(Improving)涉及开发.管理和改进过程及其相关资产,其主要重点是提高组织绩效.保持习惯和持久性可确保过程在整个组织中是持久.习惯性地执行和维持,并有助于有效地实现业务绩效目标.治理(GOV ...
- inline®ister
inline关键字: 内联只是一个请求,不代表编译器会响应:同时某些编译器会将一些函数优化成为内联函数. C++在类内定义的函数默认是内联函数,具体是否真变成内联函数还需看编译器本身. registe ...
- (十八)VMware Harbor 镜像同步
为什么需要镜像同步 由于对镜像的访问是一个核心的容器概念,在实际使用过程中,一个镜像库可能是不够用的,下例情况下,我们可能会需要部署多个镜像仓库: 国外的公有镜像下载过慢,需要一个中转仓库进行加速 容 ...
- 网络编程Netty入门:ByteBuf分析
目录 Netty中的ByteBuf优势 NIO使用的ByteBuffer有哪些缺点 ByteBuf的优势和做了哪些增强 ByteBuf操作示例 ByteBuf操作 简单的Demo示例 堆内和堆外内存 ...
- 做个开源博客学习Vite2 + Vue3 (一)搭建项目
前言 不会 webpack,遇到报错就一头雾水,完全不知道怎么办,而且体积还大速度还慢. 所以尤雨溪做了 vite 后就很向往,只是知道自己水平有限还是等大佬先趟趟坑,等差不多了在跳. 现在vite2 ...
- 多图详解 TCP 连接管理,太全了!!!
TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播.广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址. 在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条 ...
- Day12_60_多线程的创建和启动(一)
多线程的创建和启动 * 在java语言中实现多线程的第一种方式, 继承 java.lang.Thread; 之后重写run()方法. * 使用多线程之后,主线程和其他线程是不在同一个栈中的,一个线程对 ...
- 简单好用微服务套件Anno&Viper DashBoard全新版来啦
1.Anno简介? Anno是一个微服务框架引擎.入门简单.安全.稳定.高可用.全平台可监控.依赖第三方框架少.底层通讯RPC(Remote Procedure Call)采用稳定可靠 ...