转自:http://www.codeweblog.com/sed%E5%88%9D%E5%AD%A6%E8%80%85%E5%AE%9E%E7%94%A8%E8%AF%B4%E6%98%8E/



sed的调用方式:

1、sed [sed选项] 'sed命令' 要修改的文件

2、sed [sed选项] -f sed脚本 要修改的文件

3、sed脚本 [sed选项] 要修改的文件

这里仅介绍最常用的第一种方式

sed选项:仅列常用的

-i:直接修改源文件(不用这个选项的话无法直接修改,必须重定向到新文件,如果仅作为输出测试则不需此选项),还可将源文件修改前备份

sed -i.bak 's/123/234/' test.txt 将test.txt备份为test.txt.bak,然后将文件内行第一个出现的“123”替换为“234”

-e:多次编辑,例如先将所有的123替换为234,再将第7行前加#号注释

sed -i -e 's/123/234/g' -i -e '7 s/^/#/' test.txt

-f:指定sed脚本文件名

-n:取消默认的输出(不打印),用sed不加任何选项的话你会看到所有内容输出,并不是按照sed命令所限制的条件输出,那么配合“p”命令经可以过滤掉不符合条件的行,并显示出符合条件的行,例如

sed -n '查找所有包含字符123的行'p test.txt 或 sed -n '查找所有包含字符123的行p' test.txt

sed命令:这里可以使用正则表达式,如遇特殊字符,需用“\”来屏蔽其特殊含义,例如“\$”表示普通的字符$

x x为某行行号

x,y 例如2,5,从第2行到第5行

/val/ 查询包含“val”字符的行

/val1/val2/ 查询包含两个模式的行

val/,x 在给定行号的行上查询包含“val”的行

x,/val/ 通过行号和模式查询匹配的行

x,y! 不包含指定行号x,y的行

p 打印匹配的行

= 显示行号

a\ 在定位了的行之后附加内容

i\ 在定位了的行之后插入内容

d 删除定位的行,例如:2d 代表删除第2行

c\ 用新文本替换定位行的文本

s 替换,形式为:'s/查找的内容/替换的内容/'

g 进行全局替换,如不使用此选项将只对该行匹配到的第一个结果进行替换,该行下一个匹配的就不处理了。

...其他就不介绍了,百度搜下吧

实例学习:

test.txt文件内容为

The honeysuckle band played all night long for only $90

It was an evening of splendid music and company

Too bad the disco floor fell through at 23:10

The local nurse Miss P.Neave was in attendance

1、显示第2行的内容

sed -n '2p' test.txt

2、显示第1到3行的内容

sed -n '1,3'p test.txt

3、仅显示包含“disco”的行

sed -n '/disco/'p test.txt

4、显示包含“$”字符的行

sed -n '/\$/'p test.txt

5、显示以数字结尾的行,[0-9]是正则表达式 代表数字0到9;“$”表示行尾(“^”表示行首)

sed -n '/[0-9]$/'p test.txt

显示结果为:

The honeysuckle band played all night long for only $90

Too bad the disco floor fell through at 23:10

6、显示以数字结尾的行并显示以大写T为开头的行

sed -n -e '/^T/'p -e '/[0-9]$/'p test.txt

7、匹配任意字母、后跟任意字母的多次重复,并以“ing”结尾的行

sed -n '/.*ing/'p test.txt

8、第一行与最后一行

sed -n '1p' test.txt

sed -n '$p' test.txt

9、将“nurse”改为“little nurse”,“&”命令用来重新调用被替换的内容

sed -n 's/nurse/little &/p' test.txt

10、先将所有的123替换为234,再将第7行前加#号注释

sed -i -e 's/123/234/g' -i -e '7 s/^/#/' test.txt

11、将“--------”删除,将空行删除,将第一行和最后一行删除,并打印第一列

文件内容:

Database Size(MB) Date Created

------------------------------------------

mysql 2244 12/11/08

test 5632 12/11/08

(2 rows affected)

命令:

cat test.txt | sed 's/--*//g' | sed '/^$/d' | sed '$d' | sed '1d' | awk '{print $1}'

显示结果:

mysql

test

说明:

使用s/--*//g删除横线-------

使用/^$/d删除空行

使用$d删除最后一行

使用1d删除第一行

awk {print $1}打印第一列

12、一些杂项例子

^[0-9]表示行第一个字符为任意数字,例如“1asdf”;

^[0-9]*表示行首包含任意个数的数字,例如“1818asdf”

[0-9][0-9]*$表示行尾包含至少2个数字,例如“asdfasdf18”“asdf1818”

sed -i 's/^[0-9]*//g' test.txt 删除行首的任意数字

sed -i -e 's/^[0-9]*//g' -i -e 's/$/& passed/' test.txt 删除行首任意数字,并在每行结尾加上“ passed”

sed -i -e 's/^/#&' test.txt 给每行行首加上“#”注释

s/\.$//g 删除以句点结尾的行的句点

s/^[ ][ ]*// 删除行首的任意个空格

s/^.// 删除行首的第一个字符

s/^\/// 删除行首的“/”字符

s/SP\(..\)//g 删除字符“SP”以及紧跟其后的两个任意字符,“SPLLY”-->“Y”

sed初学者实用说明的更多相关文章

  1. 20个初学者实用的CSS技巧

    过去就连一个镜像站点,我们都依靠大量的开发人员和程序员进行维护.得益于CSS和它的灵活性使得样式能够从代码中被独立抽离出来,从而让一个只具备基本CSS理论的初学者都能够轻易地改变网站的样式. 不论你是 ...

  2. IDEA初学者实用小技巧

    创建Web项目:1.(File-->new project)JavaEnterprise-->Web Application-->Next.2.配置Tomcat服务器:右上角的Edi ...

  3. 给初学者的20个CSS实用建议

    英文原文:20-useful-css-tips-for-beginners,编译:杨礼鑫 过去就连一个镜像站点,我们都依靠大量的开发人员和程序员进行维护.得益于CSS和它的灵活性使得样式能够从代码中被 ...

  4. sed修炼系列(一):花拳绣腿之入门篇

    本文为花拳绣腿招式入门篇,主要目的是入门,为看懂sed修炼系列(二):武功心法做准备.虽然是入门篇,只介绍了基本工作机制以及一些选项和命令,但其中仍然包括了很多sed的工作机制细节.对比网上各sed相 ...

  5. sed从入门到深入的使用心得

    本人已经此系列的sed文章整理到pdf中,欢迎下载:玩透sed:探究sed原理 sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)se ...

  6. Python - 搭建Jupyter notebook环境

    1- Jupyter简介 HomePage:https://jupyter.org/ 安装指南:https://jupyter.org/install.html 官方文档:https://jupyte ...

  7. IOC控制反转之Autofac

    https://www.jianshu.com/p/1b6cb076e2e5 博主:衡泽_徐峰 Autofac官网:https://autofac.org/ Autofac 是.Net非常好的一个IO ...

  8. GitHub 热点速览 Vol.17:在?各家视频会员要不要?

    作者:HelloGitHub-小鱼干 摘要:经济实用,用作上周的 GitHub 热点的横批再合适不过.先不说 GitHub Trending 上不止一个的会员共享项目,免你找好友刷脸要会员,这项目实在 ...

  9. 【BUAA软工】团队项目选择

    项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:团队项目选择与NABCD分析 团队项目选择 项目介绍 项目简介 项目名称:Visual Lab Online 项目简介:一款面向学生和个 ...

随机推荐

  1. phpdocumentor安装和使用总结

    为了解决一校友在安装和使用phpDocumentor过程中遇到的问题,自己闲时也折腾了一下这个东西,总结见下: 一.定义: 自己刚听到这个词时还不知道这个是什么东西,干啥用的,就去百度了一下,说道: ...

  2. CDH5上安装Hive,HBase,Impala,Spark等服务

    Apache Hadoop的服务的部署比較繁琐.须要手工编辑配置文件.下载依赖包等.Cloudera Manager以GUI的方式的管理CDH集群,提供向导式的安装步骤.因为须要对Hive,HBase ...

  3. 数学与猜想 数学中的归纳和类比 (G. 波利亚 著)

    第一章 归纳方法 (已看) $1. 经验和信念 $2. 启发性联想 $3. 支持性联想 $4. 归纳的态度 第二章 一般化,特殊化,类比 (已看) $1. 一般化,特殊化,类比和归纳 $2. 一般化 ...

  4. C语言打印100到200之间的素数

    用C语言打印素数,我们首先要了素数的相关定义:只有1和它本身两个因数的自然数,也就是说除了1和它本身外,不能被其他自然数整除的数就称为素数. 例如:101只能被1 和101 整除:103只能被1 和1 ...

  5. maven 阿里云 国内镜像 中央仓库

    修改maven根目录下的conf文件夹中的setting.xml文件,具体内容和示意图如下: <mirror> <id>alimaven</id> <name ...

  6. java-环境安装及配置

    需要安装的软件有: 1.Jdk1.8 2.Tomcat8 3.Eclipse Neon 4.Mysql 5.项目导入 1.JDK安装 1.1安装JDK 1.2配置环境变量 高级系统配置: 环境变量: ...

  7. deque/defaultdict/orderedict/collections.namedtuple()/collections.ChainMap() 笔记

    关于deque的使用 collections.deque([list[, max_length]]) # 不限定长度,可随意添加没有上限 >>> from collections i ...

  8. 大数据时代——为什么用HADOOP?

    转载自:http://www.daniubiji.cn/archives/538 什么叫大数据 “大”,说的并不仅是数据的“多”!不能用数据到了多少TB ,多少PB 来说. 对于大数据,可以用四个词来 ...

  9. Consul+upsync+Nginx实现动态负载均衡 摘自https://blog.csdn.net/qq_29247945/article/details/80787014

    传统感念:每次修改完nginx配置文件,要重启nginx 动态感念:每次修改完nginx配置信息,不需要重启,nginx实时读取配置信息. Nginx: 反向代理和负载均衡 Consul:是用go编写 ...

  10. Excel技巧--时尚的圆环比例图

    如上图,制作方法如下: 1.创建圆环图:选择表格,点击“插入”-->点击 圆环图. 2.删除图中的标题和标记,将圆环内径缩至最小: 3.复制表格的数据,重复两次粘贴到图表中: 4.依次选择内两环 ...