Linux Shell编程笔记6 sed流编辑器
简介
sed
是一个流编辑器,它会读取文件流,以行为单位进行处理。sed
会按照顺序执行对每一行执行命令。sed
把每一行结果写入标准输出,不修改任何输入文件。一般来说,文件流需要处理每一行的时候,需要借助sed
进行处理。
打印和删除
-e
参数表示执行一个命令脚本,而这个脚本都用' '
扩起来。脚本支持正则式,比如需要使用/ /
括起来正则式的内容。
几个常见的用法:
sed -e 'd' /tmp/passwd.bak # 对每一行执行删除,'d'就是删除命令,所以没有任何输出
sed -e '5d' /tmp/passwd.bak # 删除第五行
sed -e '1,5d' /tmp/passwd.bak # 删除第一行到第五行,闭区间
sed -e '/^#/d' /etc/rc.local # 删除所有的注释行,注意正则式/^#/
几个常用的正则式:
有几个其它的命令,比如-p
选项表示打印匹配上的行。
一个例子,打印main函数的内容:
sed -n -e '/main[[:space:]]*(/,/^)/p' /tmp/a.c | more
替换
以行为单位,执行文本流的替换,举个例子:
sed -e 's/power/jiecheng/g' /tmp/a.c
把所有的power
替换成jiecheng
。s
表示替换命令,g
表示全局操作,如果没有g
,则只替换第一个。
sed -e '1,10s/power/jiecheng/g' /tmp/a.c
和上个命令一样,只不过范围是1-10行了
sed -e '/main[[:space:]]*(/,/^)/s/power/jiecheng/g' /tmp/a.c
范围成了main函数内部了。
sed
可以修改分隔符,比如
sed -e 's:/usr/local:/usr:g' mylist.txt
把/usr/local
替换成/usr
,此时分隔符成了:
,当然也可以添加\
来转义操作。
注意一点,sed
正则替换的时候,默认替换全文的最长匹配,而不是每一行的匹配。举个例子:
main.html文件
<html>
<head>main page<head>
<body><b>This</b>is <b>main</b>page.</body>
</html>
我们打算去掉所有的标签,如果直接执行:
sed -e 's/<.*>//g' main.html
那么所有的都会被替换了,输出空。正确的匹配方式应该是:
sed -e 's/<[^>]*>//g' main.html
意思是,^>
表示非>
符号,遇到了就跳出任意字符的匹配,而匹配上了*
后的>
,直接替换匹配结束。
命令组合
有些时候,我们需要把多个命令应用到一行中,下面给出几个组合方式。第一个是使用分号分隔命令:
sed -n -e '=;p' /tmp/passwd.bak
输出行号,然后打印。
Linux Shell编程笔记6 sed流编辑器相关推荐
- linux+shell+func,Linux shell编程笔记总结
Linux Shell学习笔记简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称.shell是用户和Linux内核之间的接 ...
- Linux Shell编程笔记8 进程
进程查看机制 ps (process state缩写)命令是进程查看命名,用于Linux系统中所有的进程查看.在当前文件夹下执行如下命令ps,显示: PID TTY TIME CMD7784 pts/ ...
- Linux Shell编程笔记7 awk的应用
简介 awk是用于基本文本处理的工具.一般遇到复杂格式等的处理问题时,应该优先想到使用awk.比awk更加高端的,还有perl语言,它专门用于文本处理.python也有丰富的文字处理功能,但是这是它的 ...
- Linux Shell 编程笔记
2019独角兽企业重金招聘Python工程师标准>>> 常用命令 echo [STR] # 打印显示字符串 printf '[FORMAT]' [ARG] #格式化输出(不支持数据流 ...
- Linux Shell编程笔记10 Shell数组的补充
数组可以通过下标或值进行索引,如果不存在,则值为空.比如: #!/bin/bash arr[0]=hello echo ${arr[1]} # 输出空内容 使用@输出所有数组的内容,使用#和@输出元素 ...
- Linux Shell编程笔记9 SSH和Screen工具
SSH SSH的作用是对数据进行加密处理.在互联网上直接使用明文传输是不安全的.中间人攻击就是通过窃取发送的明文数据,然后进行攻击.一个较为安全的方式是,把数据进行加密传输,这样使得攻击者获取到的数据 ...
- 《Linux Shell编程学习笔记之一》
<Linux Shell编程学习笔记之一> 前言 由于自己一直在Windows上面编程,用linux用的比较少,学习linux还是本科大二学的一点点知识.因此自己就准备花点时间来熟悉下li ...
- Linux Shell编程学习笔记(4)
Linux Shell编程学习笔记(2015-7-20) 分类:linux shell 今天学习了Linux Shell中的控制结构.其实大多数语言的控制结构这一块都是基本类似的,有了C语言的基础 ...
- Linux Shell编程学习笔记(2)
Linux Shell编程学习笔记(2015-7-12) 分类:linux shell Shell变量 一:关于Shell变量 Shell是一种弱类型的语言,变量存储的一切值都是字符串.Shell ...
最新文章
- 优秀案例:12个精美的设计工作室 设计公司网站
- thinkphp中配置信息的二维数组设置与使用
- Twitter创始人Jack Dorsey的每日必做和不做清单
- 无监督学习 k-means_无监督学习-第4部分
- Struts2.3,s:iterator,c:forEach遍历map中的list集合
- 服务器物品展示框刷物品,我的世界1period;11period;2展示框刷物品bug | 手游网游页游攻略大全...
- vb6 方法‘ ’作用于对象 失败_JS基础入门-对象的使用
- 构造方法 c# 0106
- Objective-C语法快速参考
- UWP开发---通过委托跨页面导航
- java运行多个linux命令_在shell的一行中运行多个命令
- 一张以你为中心的地图
- html打开软件连接的代码,《前端开发从零学起》Lesson.7 HTML中超链接的使用方法...
- EDA鸿蒙是不是,如果华为不强研鸿蒙,和阿里合作,新系统或早用到手机上了? - 区块网...
- hdu1402(大数a*bfft模板)
- spss分析方法-T检验
- 怎样在 iPhone 或 iPad 上使用“快捷指令”?
- 【语音识别入门】Python音频处理示例(含完整代码)
- CMD命令查看局域网内所有主机名及IP
- 刁肥宅数据结构课设:布隆过滤器的实现和应用(v 1.1,修正非最终版)