sed命令的使用(1)

1.sed介绍
sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。标准输入可
能是来自键盘、文件重定向、字符串或变量,或者是一个管道的文本。sed可以做些什么呢?别忘了, Vi也是一个文本编辑器.sed可以随意编辑小或大的文件,有许多sed命令用来编辑、删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来讲,最重要的是节省了时间。

2.sed怎样读取数据
sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲
区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定位行号编辑它。重复
此过程直到命令结束。



3.调用sed
调用sed有三种方式:在命令行键入命令;将sed命令插入脚本文件,然后调用sed;将sed命令插入脚本文件,并使 sed脚本可执行。
使用sed命令行格式为:
sed [选项] sed命令 输入文件。
记住在命令行使用 sed命令时,实际命令要加单引号。 sed也允许加双引号。

使用sed脚本文件,格式为:
sed [选项]  -f  sed脚本文件  输入文件

要使用第一行具有 sed命令解释器的sed脚本文件,其格式为:
sed脚本文件 [选项] 输入文件
不管是使用shell命令行方式或脚本文件方式,如果没有指定输入文件, sed从标准输入中
接受输入,一般是键盘或重定向结果。

sed选项如下:
n不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以用来打印编辑行。

c下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条 sed命令,
此选项无用,但指定它也没有关系。

f 如果正在调用sed脚本文件,使用此选项。此选项通知sed一个脚本文件支持所有的sed
命令,例如:sed -f myscript.sed input_file,这里myscript.sed即为支持sed命令的文件。



4.使用sed在文件中查询文本的方式
sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本:
1) 使用行号,可以是一个简单数字,或是一个行号范围。
2) 使用正则表达式

x            x为一行号,如 1
x,y            表示行号范围从 x到y,如2,5表示从第 2行到第5行
/pattern/        查询包含模式的行。例如 /disk/或/[a-z]/
/pattern/pattern/    查询包含两个模式的行。例如 /disk/disks/
pattern/,x        在给定行号上查询包含模式的行。如 /ribbon/,3
x,/pattern/        通过行号和模式查询匹配行。 3./vdu/
x,y!            查询不包含指定行号 x和y的行。1,2!


5.基本sed编辑命令
p        打印匹配行
=        显示文件行号
a\        在定位行号后附加新文本信息
i\        在定位行号后插入新文本信息
d        删除定位行
c\        用新文本替换定位文本
s        使用替换模式替换相应模式
r        从另一个文件中读文本
w        写文本到一个文件
q        第一个模式匹配完成后推出或立即推出
l        显示与八进制 ASCII代码等价的控制字符
{}        在定位行执行的命令组
n        从另一个文件中读文本下一行,并附加在下一行
g        将模式2粘贴到/pattern n/
y        传送字符
n        延续到下一输入行;允许跨行的模式匹配语句

6.举例:
首先编辑一段文本  sed.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.

使用sed查找The单词 并打印句子
sed -n '/The/'p sed.txt

匹配美元符号
sed -n '/\$/'p sed.txt

显示所有文件
sed -n '1,$p' sed.txt

匹配字符ing
sed -n '/.*ing/'p sed.txt


sed -n '1p' sed.txt
sed -n '1p' sed.txt
打印文件第一行和最后一行

打印匹配到的行号
sed -e '/music/=' sed.txt


7.创建sed脚本
第二行以/company/开始,这是附加操作起始位置。
a\通知sed这是一个附加操作,首先应插入一个新行。第三行是附加操作要加入到拷贝的实际文本。

8. append.sed脚本内容
#!/bin/sed -f
/company/ a\
Then suddenly it happened.

删除文件中的内容
删除第一行
sed '1d' sed.txt

如果想删除1,3两行
sed '1,3d' sed.txt

删除最后一行
sed '$d' sed.txt

参考书籍:shel脚本编程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值