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脚本编程
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脚本编程