现在的位置: 首页 > 综合 > 正文

leeboy的linux学习九sed实例

2013年02月25日 ⁄ 综合 ⁄ 共 1570字 ⁄ 字号 评论关闭

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。如果需要保存可以重定向到指定文件。

3sed '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的最后一行删除,第一行删除,“--------------”行删除,空行删除,只显示第一列。

8sed '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 延续到下一输入行;允许跨行的模式匹配语句

抱歉!评论已关闭.