塞尔达传说 sed

SED是什么意思?sed命令的功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大,sed全称是:Stream EDitor
SED(Surface-conduction Electron-emitter Display)谈到平板显示技术,多数人可能只知道液晶和等离子,有人可能还知道有机发光二极管(OLED)显示技术、电致发光EL显示技术和电子纸,但对SED这种显示技术,知道的人可能就不多了 。在画质上,SED全面胜过了液晶和等离子电视,而且功耗也比同尺寸的液晶和等离子电视低得多 。SED的横空出世,让人们又多了一个选择 。
sed是stream editor的缩写 。是一个非交互式上下文(context)编辑器,它被设计在下列三种情况下发挥作用: 1) 编辑那些对舒适的交互式编辑而言太大的文件 。2) 在编辑命令太复杂而难于在交互模式下键入的时候编辑任何大小的文件 。3) 要在对输入的一趟扫描中有效的进行多个‘全局’(global)编辑函数 。
 中美战略经济对话: China Strategic Economic Dialogue ;US Strategic and Economic Dialogue ;US Strategic Economic Dialogue 中美战略经济对话机制: Strategic Economic Dialogue 中美战略与经济对话: Strategic and Economic Dialogue ;China Strategic and Economic Dialogue ;Us Strategic and Economic Dialogue

塞尔达传说 sed

文章插图
三剑客之sedsed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以来自键盘输入,文件重定向,字符串,变量,或者是管道的文本 。并将其复制到缓冲区,然后读取命令行的命令,对此命令要求的行号进行编辑 。
用法 :
sed共有三种用法:
①直接在命令行中使用
sed [选项] 'sed命令' 输入文件
②将sed命令写入脚本文件中,使用sed命令调用
sed [选项] -f sed脚本文件 输入文件
③将sed命令写入脚本文件中,并设置为可执行
./sed 脚本文件 输入文件
其中第③种的脚本文件中需要使用#!符号开头 。
sed常用的选项
-n:不打印所有的行到标准输出,只输出那些被命令影响到的行
-e:表示将下一个字符串解析为sed编辑命令,如果只有一个编辑命令,则-e可以省略
-f:表示正在调用sed脚本文件
-r:表示支持延伸型的正则表示法(默认只支持基础正则表示法)
-i:直接修改读取的文件内容,而不是通过屏幕输出 。
sed命令
sed命令通常由两部分组成 。文本定位和sed编辑命令 。
文本定位对文本的部分行进行抽取,编辑命令对抽取的行进行编辑 。
sed定位方式
sed提供了两种定位方式:
①通过行号,指定一行或者行号范围
②使用正则表达式
定位方式:
x:x为指定行号
x,y:指定从x到y的行号范围
/pattern/:查询包含模式的行
/pattern/pattern/:查询包含两个模式的行
x,/pattern/:从x行到patter模式匹配的行之间
x,y!:查询不包括x和y行号的行
sed编辑命令
p:打印匹配行
=:打印文件行号
a:在定位行号之后追加文本信息
i:在定位行号之前插入文本信息
d:删除定位行
c:使用新文本替换文本行
s:使用替换模式替换相应模式
r:从另一个文件中读取文本
w:将文本写入到一个文件
y:变换字符
q:第一个模式匹配后退出
{}:在定位行执行命令组
n:读取下一个输入行,用下一个命令处理新的行
说了这么多,我们就先来体验一下:
[ fuwh@localhost 15:11 ~/stu ] $ nl test
1 first line
2 second line
3li n e
4 what is this
[ fuwh@localhost 15:11 ~/stu ] $ sed '2d' test
first line
l i n e
what is this
这就是sed的一个基本使用方式 。
sed '2d' test:2表示定位到第二行,d表示删除,test表示输入文件 。
选项-n的用法
[ fuwh@localhost 16:22 ~/stu ] $ cat test
first line
second line
l i n e
what is this
[ fuwh@localhost 16:22 ~/stu ] $ sed -n '2,4p' test
second line
l i n e
what is this
[ fuwh@localhost 16:22 ~/stu ] $
除了使用-e选项外,还可以使用{}和;来实现相同的功能
[ fuwh@localhost 17:04 ~/stu ] $ cat test | sed -n '3,$' {d;p}
sed:-e 表达式 #1,字符 3:遗漏命令
-bash: p}: commandnot found
[ fuwh@localhost 17:04 ~/stu ] $ cat test | sed -n '3,${d;p}'
[ fuwh@localhost 17:05 ~/stu ] $ cat test | sed -n '3,${p;=}'

秒懂生活扩展阅读