关于sed用法
sed处理流程
sed的处理流程,简化后是这样的:
1.读入新的一行内容到缓存空间;
2.从指定的操作指令中取出第一条指令,判断是否匹配pattern;
3.如果不匹配,则忽略后续的编辑命令,回到第2步继续取出下一条指令;
4.如果匹配,则针对缓存的行执行后续的编辑命令;完成后,回到第2步继续取出下一条指令;
5.当所有指令都应用之后,输出缓存行的内容;回到第1步继续读入下一行内容;
6.当所有行都处理完之后,结束。
sed基础用法
1.关于删除(d):
删除某行:sed 'd' file 删除所有
sed '1d' file sed '1,3d' sed -e '1d' -e '3d' file 删除指定行
删除匹配的行或者字符:sed '/test/d' file 删除包含test字符的行
sed '/test/!d' file 删除不包含test字符的行
sed '/[0-9]\{3\}/d' file 删除包含三位数的行
sed ‘s/^…//’ file 删除开头的三个字符
sed ‘s/…$//’ file 删除结尾的三个字符
sed 's/test//' file 删除test字符 (/g表示全局)
sed '3s/test//' file 删除第3行中的test字符
删除空格:
sed '/1,/^$/d' file 删除从第一行开始直到出现空格
sed '/^$/d' file 删除所有空行
sed 's/^ *//g' file 删除行首的空格
2.关于显示和替换(s,p): s模式与g搭配,全局替换 搭配n,跳过不匹配行,搭配I忽略大小写
//关于n:sed的执行流都是先读取一行到模式空间,然后执行编辑,再输出, 当前行完全处理后sed首先清空模式空间,然后自动再读取下一行到模式空间中。可以在执行编辑的过程中通过命令n来读取文件的下一行,此时模式空间里的内容被下一行完全替换,并且当前的行号增1,但是控制流没有回到起始点,而是在n命令后继续
匹配: sed –n '/test/p' file 显示含有test的行,-n跳过其他不符的行
替换并显示: sed -n 's/test/TEST/p' file
sed -n 's/test/TEST/gp' file 增加g,替换每一行中所有test字符
保存符合的样式:sed -n 's/\(.*\):\(.*\)/\2\t\1/' 把第一个匹配到的样式保存在1中,以此类推
替换指定行字符:sed -n '/9/s/test/TEST/p' file 找到含有9字符的行,并把这行的test变成TEST
sed -n '/9/,/222/s/test/TEST/p' file 找到含有9字符的行和含有222字符的行,并把中间的这些行的test变成TEST
sed -n '9, 22s/test/TEST/p' file 从第9行到22行之间的test变成TEST
匹配ip地址替换成域名:sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/www.hello.com/g' file 注意在sed匹配中,特殊字符要进行转义
分组命令: sed '/hello/,/hehe/{s/test/TEST/g;s/do/did/g}' file 在指定 描述限定下,想完成更多的操作使用大括号{} 匹配到/hello/开始,/hehe/结束
替换的重定向:
sed 's/hello/hi/g < file > file1 将file中的hello替换成hi,然后file1
echo hello | sed 's/hello/hi'
替换模式中的一些特殊字符:
& :在正则表达式匹配单词时,可以使用&代替已经匹配的内容 sed 's/hehe/oo&oo/g' file ==》 ooheheoo
exp: echo "111 hello" | sed 's/[0-9][0-9]*/ & hao / ==> 111 hao hello
\1:保存第一个匹配到的样式
!:相反与取反 sed '1,3!d'
注意:如果需要匹配&字符需要\来转义
另外: 中间的/只是用来分隔的,除了换行符其他都可以用 例如 : | !? 等 #sed 's?ko?hahaha?g' file
样式匹配的应用:同事给我出的题 调换第一行和第三行的位置
# echo -e "a\nb\nc\nd" |sed -e 'N;N;N' -e 's/\([a-z]*\)\n\([a-z]*\)\n\([a-z]*\)\n\([a-z]*\)/\3\n\2\n\1\n\4/'
c
b
a
d
3.关于编辑文件(a追加,i写入):
echo "a\nb\nc\n\d" |sed '/b/ aHELLO' 追加到匹配行
echo "a\nb\nc\n\d" |sed '/b/,/d/ aHELLO' 从第一个匹配行开始,到第二个匹配行结束追加
写着写着就觉得需要赶紧买本sed&awk看看
关于sed用法的更多相关文章
- linux学习基础6之sed用法详解
1 sed 又称为流编辑器,它逐行将文本文件中的行读取到模式空间中间去,将符合编辑条件的行进行编辑后输出到显示器上来.默认sed不编辑原文件只处理模式空间中的内容. 2 sed用法 sed [opti ...
- LeetCode(193. Valid Phone Numbers)(sed用法)
193. Valid Phone Numbers Given a text file file.txt that contains list of phone numbers (one per lin ...
- sed用法说明
sed介绍 sed:stream editor 是一个行编辑器,或叫流编辑器,每次处理一行,处理完一行再处理下一行.sed并不直接处理源文件,而是读取一行后放入模式空间(patten space)里, ...
- 【转载】linux之sed用法
linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具 ...
- sed 用法
sed 用法 sed的其他用法如下: 1.删除行首空格 sed 's/^[ ]*//g' filename sed 's/^ *//g' filename sed 's/^[[:space:]]*// ...
- [转帖]linux之sed用法
linux之sed用法 https://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html docker images | awk ' ...
- linux之sed用法
参考 http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行 ...
- sed用法
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- 【转】 linux之sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed ...
随机推荐
- Python 开发轻量级爬虫08
Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...
- iOS开源项目、框架资源
总结的 iOS.Mac开源项目.库.知识点:http://www.open-open.com/lib/view/open1442664670352.html
- Java面试:1
月薪10000以上: 1.了解Java的反射机制 2. 了解泛型的原理 3. 了解Spring框架的基本原理 4. 熟悉设计模式 5. 了解如斐波那契数列之类的简单算法月薪20000以上: 1. 精通 ...
- Linux系统virtualbox + ubuntu + xshell 问题与注意事项
序言:ubuntu闭源软件太多,一般不推荐使用:没钱可以使用centos.debian:有钱使用redhat 目前主流和常用的Linux版本主要有:1.Redhat 版本5.5和6.0最新:培训.学习 ...
- apache自带的web监控器配置
第一:将mod_status模块放开,即去掉httpd.conf中的# 第二:在httpd.conf后面添加下面内容 <Location /server-status> SetHandle ...
- 【数据结构初学】(java实现篇)——队列(转)
原文地址:http://www.cnblogs.com/skywang12345/p/3603935.html 原文地址:http://www.cnblogs.com/skywang12345/p/3 ...
- python计算文件的md5值
前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...
- C# 使用 NPOI 库读写 Excel 文件(转载)
NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼 容xls 和 xlsx.官网提供了一份Examples,给出了 ...
- linux安装open block chain
Compile the source code Step 1. 安装git sudo apt-get install git Step 2. 安装vagrant(ubuntu系统) 下载地址https ...
- 个人对Java中多态的一些简单理解
什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一 ...