sed文本处理工具

sed文本处理工具

大家好,又见面了,我是全栈君。

sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。注 :不给地址默认全文处理

sed文本处理工具
 
常用选项有如下几个
 

-n:不输出模式空间内容到屏幕,即不自动打印
-f:-f<script文件>或–file=<script文件>:以选项中指定的script文件来处理输入的文本
-r: 支持使用扩展正则表达式
-i.bak: 备份文件并原处编辑 谨慎使用
-e: 多点编辑

sed文本处理工具

参数
 

文件:指定待处理的文本文件列表。(内容较多,这会就不一 一举例了,常用的我给加了粗体。)
a\ 在当前行下面增加文本。
i\ 在当前行上面插入文本。
c\ 把选定的行替换为新的文本。
d 删除,删除选择的行。
D 删除模板块的第一行。
s 替换指定字符
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写) 打印模板块的第一行。
q 退出Sed。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。
W file 写并追加模板块的第一行到file末尾。
! 取前面匹配结果反面的意思。
= 打印当前行号码。
#把注释扩展到下一个换行符以前。

 
sed替换标记

g 表示行内全面替换。
p 表示打印替成功的行。
w 表示把行写入一个文件。
x 表示互换模板块中的文本和缓冲区中的文本。
y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1 子串匹配标记
& 已匹配字符串标记 把前面第一个字符看做一个整体,替换时常用. &对应于之前所匹配到的单词

 

正则表达式基础

 

它是一个字符匹配标准,一些命令工具按此标准实现字符匹配,根据命令支持的匹配功能可分为基础正则表达式和扩展正则表达式,常用于支持正则表达式的工具,如sed,grep,awk…

有如下一些常用的匹配元字符:
 
字符匹配
 

\ 转义符 后面可以跟其它字符
.  匹配任意单个字符
* 匹配其前面一个字符出现任意次。包括0次
.* 任意长度的任意字符
? 匹配其前面的字符1次或0次
 + 匹配其前面一个字符出现至少一次(在扩展正则表达式中)
\? 匹配其前面的字符0或 1次
\+ 匹配其前面的字符至少1次
\| 或的关系  如C\|cat C或cat     \(C\c)at:Cat或cat
\{,n\} 匹配前面的字符之多n次
\{n,\} 匹配前面的字符至少ng次
\{n\} 匹配前面的字符n次  
\{m,n\} 匹配前面的字符至少m次,至多n次 \{2,3\} 2-3位
*分组*
\(\)    如\(root\)\+ 这里root是一个整体来匹配

 

位置匹配

^:锚定行首br/>$:锚定行尾
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
\B:非单词的开头或结尾
^$:空白行
$@:表示所有脚本参数的内容
\$# 表示返回所有脚本参数的个数。
分组() :
(ab)* : 匹配ab这个分组出现任意次
\1:引用第一个左括号以及与之对应的右括号所包括的所有内容,同理还有\2,\3

 
sed实例

[root@localhost /app]#cp /etc/passwd /app/

[root@localhost /app]#ls
di.sh  man  oo.txt  passwd  passwd22  ping.sh  tongji.sh  ttt.sh

 

1.全面替换标记g
打印paswdd文件第一行并把“root”全局替换成”ROOT”:

sed文本处理工具

 

2.打印passwd文件第1行到第5行并在第三行后面追加内容”SIMITE”
sed文本处理工具
第二题讲解一下这个分号;是用来做分隔处理的。;号不是固定代表也可用@或%,它们统一成为“分隔符”,前面处理前面的后面处理后面的。

 

3.统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
ls |sed -n ‘s;..(.).rpm$;\1;p’ | sort | uniq -c | sort -nr

sed文本处理工具

 

总结

sed是流编辑器,可对文本/二进制文件进行:替换/删除/添加操作。
awk是文本分析工具,可对文件进行分析处理,尤其适合对文本文件进行数据提取、数据统计、数据比对等等分析处理操作。对大数据量的文件数据比对尤其令人印象深刻:几百万行的数据对比只要几分钟就能出结果,性能极好。
而grep是字符串以行查找工具
它们都支持“正则表达式”

转载于:https://blog.51cto.com/11566825/2068722

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107718.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • redis面试必会6题经典(redis集合面试题)

    Redis面试题1、什么是Redis?.2、Redis的数据类型?3、使用Redis有哪些好处?4、Redis相比Memcached有哪些优势?5、Memcache与Redis的区别都有哪些?6、Redis是单进程单线程的?7、一个字符串类型的值能存储最大容量是多少?8、Redis的持久化机制是什么?各自的优缺点?9、Redis常见性…

    2022年4月16日
  • 奈氏曲线的绘制步骤_qpcr扩增曲线是直线

    奈氏曲线的绘制步骤_qpcr扩增曲线是直线本文由@浅墨_毛星云出品,首发于知乎专栏,转载请注明出处文章链接:https://zhuanlan.zhihu.com/p/69380665作为基于物理的渲染(PBR)技术中材质高光质感的决定因素,更先进的法线分布函数(NormalDistributionFunction,NDF)的问世和发展,是PBR能够在游戏和电影工业日益普及的重要…

    2022年8月11日
  • Google凭借Buzz进军社交网络

    Google凭借Buzz进军社交网络《纽约时报》网络版今日发表分析文章称,谷歌周二发布社交网络工具GoogleBuzz,望借此与Facebook、Twitter等社交网络行业巨头竞争。     以下是文章主要内容:  面对不计其数的社交网络服务而不知所措?谷歌愿意帮忙——再多给你一个“选择”。谷歌周二发布GoogleBuzz,用户又将多一个传递信息与想法的平台。  不出预料,GoogleBuzz

    2022年10月15日
  • 解除80端口占用_443端口和80端口被占用

    解除80端口占用_443端口和80端口被占用有朋友问到,我本地phpnow,想使用80端口,但是每次都提示端口占用,有什么办法可以解决,那么最模板找出相关资料,提示如下:开始–运行–cmd进入命令提示符输入netstat-ano即可看到所有连接的PID之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选”查看”-“选择列”经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,…

    2022年7月27日
  • java中的集合

    java中的集合java集合概述Java集合可分为Collection和Map两种体系Collection接口:单列数据,定义了存取一组对象的方法的集合List:元素有序(指的是存储时,与存放顺序保持一致)、可重复的集合Set:元素无序、不可重复的集合Map接口:双列数据,保存具有映射关系“key-value对”的集合ArrayList和LinkedList的异同?答:二者都线程不安全,相对线程安全的Vector,执行效率高。此外,ArrayList是实现了基于动态数组的数据结构,Li

    2022年7月7日
  • 常用端口大全[通俗易懂]

    常用端口大全[通俗易懂]端口说明0无效端口,通常用于分析操作系统1传输控制协议端口服务多路开关选择器2管理实用程序3压缩进程5远程作业登录7回显9丢弃11在线用户13时间17每日引用18消息发送协议19字符发生器…

    2022年9月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号