您的位置:首页 > 运维架构 > Linux

leeboy的linux学习九sed实例

2012-09-04 20:18 232 查看
sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定位行号编辑它。重复此过程直到命令结束。
sed 实例详解:
1、打印指定内容:
1)、关键字搜索:sed -n '/what/'p setText:打印带有“what”的行
2)、行号搜索:sed -n '1,3'p setText:打印1-3行
3)、关键字和行号混合搜索:sed -n '4,/do/p' setText:打印从第四行开始(打印第四行,但不对第四行进行检验是否有“do”)直到出现“do”的行。
4)、sed -n '1,$'p setText:打印整个文件,$表示文件尾部,如果文件中存在“$”符号,则需要“\$”来使用:sed
-n '/\$/'p setText
5)、任意匹配:sed -n '/th.*/'p setText:必须使用”.*”,"."表示任意一字符,"*"表示左边的字符出现次数不定,所以".*"(0或N个)" .+"(1或N个)个任意字符。
6)、sed -n '/th.*/'= setText:只打印行号
7)、sed -n -e '/th.*/'p -e '/th.*/'= setText:打印行及行号
2、添加一行或多行,通过sed脚本:如下append.sed
#!/bin/sed –f
/what/ a\ #在出现what的行的后边,也可以直接使用行号
this is happened\ #所添加的文本,用“\”衔接
leeboywangtest
执行方法:./ append.sed sedText。如果需要保存可以重定向到指定文件。
3、sed 's/do/NO/g' setText:全局替换将所有do替换成NO,并打印所有。
sed -n 's/do/NO/p' setText:全局替换,但只打印替换的行。
4、插入字符串:sed -n 's/it/hello man &/p' setText:其中&代表被替换的it。例如:
原句:you must do it by your self,处理后的语句:you must do hello man it by your self
5、添加文本:sed '/do/r data.f' setText:将data.f中的所有行写到setText中含有“do”的行之后。
6、删除某个字:sed 's/f$//g' setText:删除最后一个“f”。相当于用空来替代。
7、小练习,解释:
cat setText | sed '$d' | sed '1d' | sed 's/--*//g' |sed '/^$/d' | awk '{print $1}'
将setText的最后一行删除,第一行删除,“--------------”行删除,空行删除,只显示第一列。
8、sed 's/^[0-9]*//g' setText:删除每行行首的数字。这里“*”只匹配数字。
sed 's/^[0-9].*//g' setText:多一个”.”将行首为数字的行删除。
Sed附录:
p 打印匹配行
= 显示文件行号
a \
在定位行号后附加新文本信息
i \
在定位行号前插入新文本信息
d 删除定位行
c \
用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制A S C I I代码等价的控制字符
{ }
在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: