标签:sed sed学习 笔记
sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。标准输入可
能是来自键盘、文件重定向、字符串或变量,或者是一个管道的文本。sed可以做些什么呢?
别忘了,Vi也是一个文本编辑器。sed可以随意编辑小或大的文件,有许多sed命令用来编辑、
删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来
讲,最重要的是节省了时间。
1、sed怎样读取数据
sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲
区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定位行号编辑它。重复
此过程直到命令结束。
2、调用sed
使用sed命令行格式为:
sed [选项] sed命令 输入文件
使用sed脚本文件,格式为:
sed [选项] -f sed脚本文件 输入文件
要使用第一行具有sed命令解释器的sed脚本文件,其格式为:
sed脚本文件 [选项] 输入文件
sed选项
n 不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以
用来打印编辑行。
c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条sed命令,
此选项无用,但指定它也没有关系。
f 如果正在调用sed脚本文件,使用此选项。此选项通知sed一个脚本文件支持所有的sed
命令,例如:sed-fmyscript.sedinput_file,这里myscript.sed即为支持sed命令的文件。
保存sed输出
简单地将所有输出重定向到一个文件即可
#sed ‘some-sed-commands‘ input-file > somefile
使用sed在文件中定位文本的方式
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!
sed编辑命令
p 打印匹配行
= 显示文件行号
a\ 在定位行号后附加新文本信息
i\ 在定位行号后插入新文本信息
d 删除定位行
c\ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制A S C I I代码等价的控制字符
{} 在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句
使用p(rint)显示行
print 命令格式为[address[,address]P。显示文本行必须提供sed命令行号
#sed ‘2p‘ somefile
只打印匹配行
#sed -n ‘2p‘ somefile
打印范围
可以指定行的范围,现打印1到3行,用逗号分隔行号
#sed -n ‘1,3p‘ somefile
打印模式
假定要匹配单词Neave,并打印此行,方法如下。使用模式/pattern/格式,这里为/Neave/
#sed -n ‘/Neave/‘p somefile
匹配元字符
匹配元字符$前,必须使用反斜线\屏蔽其特殊含义。模式为/\$/ p
#sed -n ‘/\$/‘p somefile
显示整个文件
要打印整个文件,只需将行范围设为第一行到最后一行 1,$。$意为最后一行
#sed -n ‘1,$p‘ somefile
打印行号
要打印行号,使用等号=。打印模式匹配的行号,使用格式 /pattern/=
#sed -e ‘/music/=‘ somefile
如果只关心实际行号,使用 - e选项
替换文本
替换命令用替换模式替换指定模式,格式为:
[address[,address]]s/pattern-to-find/replacement-pattern/[gpwn]
s 选项通知s e d这是一个替换操作,并查询 pattern-to-find,成功后用replacement-pattern替
换它。
替换选项如下:
g 缺省情况下只替换第一次出现模式,使用 g选项替换全局所有出现模式。
p 缺省sed将所有被替换行写入标准输出,加 p选项将使- n选项无效。- n选项不打印输出
结果。
w 文件名 使用此选项将输出定向到一个文件。
快速一行命令 []表示空格,[ ]表示tab键
‘s/\.$//g’ 删除以句点结尾行
‘-e/abcd/d’ 删除包含abcd的行
‘s/[][][]*/[]/g’删除一个以上空格,用一个空格代替
‘s/^[][]*//g’ 删除行首空格
‘s/\.[][]*/[]/g’删除句点后跟两个或更多空格,代之以一个空格
‘/^$/d’ 删除空行
‘s/^.//g’ 删除第一个字符
‘s/COL\(...\)//g’删除紧跟COL的后三个字母
‘s/^\///g’ 从路径中删除第一个\
‘s/[]/[]//g’ 删除所有空格并用tab键替代
‘S/^[]//g’ 删除行首所有tab键
‘s/[]*//g’ 删除所有tab键
本文出自 “Linux is belong to you” 博客,请务必保留此出处http://jwh5566.blog.51cto.com/7394620/1639767
标签:sed sed学习 笔记
原文地址:http://jwh5566.blog.51cto.com/7394620/1639767