sed 命令

来源:互联网 发布:淘宝网店怎么装修店铺 编辑:程序博客网 时间:2024/04/28 02:45

一. sed 命令行格式

一般形式: sed [ 选项 ] sed 命令 输入文件

二. sed 脚本文件格式

sed [ 选项 ] –f sed 脚本文件 输入文件

三. 第一行具有 sed 命令解释器的 sed 脚本文件格式

sed 脚本文件 [ 选项 ] 输入文件

 

 

1.   sed  在文件中查询文本的方式

方式

含义

x

X 为行号,如 1

x,y

表示范围从 x y

/pattern/

查询包含模式的行

/pattern/ pattern /

查询包含两个模式的行

pattern/,x

在给定行号中,查询包含模式的行

x,/ pattern /

通过行号和模式查询匹配模式行

x,y!

查询不包含指定行号 x y 的行

   

2.   sed 编辑命令

命令

含义

P

打印匹配行

=

显示文件行号

a/

在定位行号后附加新文本信息

i/

在定位行号后插入新文本信息

d

删除低位行

c/

用新文本替换定位文本

s

适用替换模式替换相应模式

r

从另外一个文件中读文本

w

写文本到一个文件

q

第一个模式匹配完成后退出或立即退出

l

显示与八进制 ASCII 代码等价的控制字符

{}

在定位行执行的命令组

n

从另一个文件中读文本下移行,并附加在下一行

g

将模式 2 粘贴到 /pattern n/

y

传送字符

n

延续到下一输入行:允许跨行的模式匹配语句

   

3.   sed 编程举例

命令

含义

p x

$ sed   -n ‘2p’ quote.txt

打印第二行, $ 表示最后一行

p x,y

$ sed   -n ‘1,3p’ quote.txt

打印 1 3

/pattern/

$ sed   -n ‘/Neave/’p quote.txt

匹配单词 Neave ,并打印此行

x,/pattern/

$ sed   -n ‘4,/Neave/’p quote.txt

在第四行查 Neave ,并打印此行

//$/

$ sed   -n ‘//$/’p quote.txt

匹配元字符

1,$p

$ sed   -n ‘1,$p/’p quote.txt

显示整个文件, $ 表示最后一行

/.*ing/

$ sed   -n ‘/.*ing/’p quote.txt

匹配任意字母,后跟任意字母的 0 次或者多次重复

/pattern/=

$ sed   -e ‘/music/=’ quote.txt

结果将打印出匹配的行号和整个文件

 

$ sed   -n ‘/music/=’ quote.txt

结果只打印出匹配的行号

a/

创建 sed 脚本 append.sed

#!/bin/sed –f

/compay/ a/

Then suddenly it happened

命令为 $ ./append.sed quote.txt

执行结果是在 quote.txt 文件找到 compay c/ 表示附加操作,然后在其后附加文件 Then suddenly it happened

i/

创建 sed 脚本

#!/bin/sed –f

4 i/

Then suddenly it happened

在行号 4 之前插入文本信息

c/

创建 sed 脚本

#!/bin/sed –f

/honeysuckle/ c/

The office band played well

执行结果是在 quote.txt 文件找到 honeysuckle a/ 表示修改操作,将 The office band played well 替换 honeysuckle 所在的整行文本。

d

$ sed ‘1,3d’ quote.txt

删除 1 3

 

$ sed ‘/Neave/d’ quote.txt

删除 Neave 所在行

s

$ sed ‘s/night/NIGHT/’ quote.txt

查询 night NIGHT 替换,只替换第一次匹配

s///g

$ sed ‘s/night/NIGHT/g’ quote.txt

全局替换

s///w

$ sed ‘s/night/NIGHT/w

sed.out’ quote.txt

NIGHT 替换 night 的结果保存到 sed.out

s// &/

$ sed ‘s/night/NIGHT &/p’

quote.txt

查询模式 nigiht 并保存,将替换文本 NIGHT 放在被替换模式之前, NIGHT & 换位置,结果 NIGHT 放在被替换模式之后

保存 sed 结果

$ sed ‘/Neave/ w dht’ quote.txt

将查询 Neave 的匹配结果行,写入文件 dht 中。

从文件中读文本

$ sed ‘/Neave/r sedex.txt’

quote.txt

quote.txt 中匹配模式 Neave r 表示 sed 将从另一个文件中读文本,读取到的文本放在匹配模式 Neave 后。

q

$ sed ‘/.a.*/q’ quote.txt

查询首次出现模式,然后退出

l

$ sed   -n ‘1 ,$l ’ quote.txt

表示从 1 $ 最后一行,列出整个文件的控制字符

shell sed 传值

$NAME=”It’s a go situation”

$REPLACE=”GO”

$echo $NAME | sed

“s/go/$REPLSCE/g”

It’s a GO situation

 

Sed 命令用的是双引号 ””

 

 

 

 

4.   一行名命令集

命令集

含义

‘s///.$//g’

删除以句点结尾行

‘-e /abcd/d’

删除包含 abcd 的行

‘s/[][][]*/[]/g’

删除一个以上空格,用一个空格代替

‘s/^[][]*/[]/g’

删除行首空格

‘s//.[][]*/[]/g’

删除句点后跟两个或更多空格,用一个空格代替

‘s/^$//g’

删除空行

‘s/^.//g’

删除第一个字符

‘s/COL/(…/)//g’

删除 COL 以及紧跟 COL 的后三个字符

s/^////g

从路径中删除第一个 /

追加文本

$ echo ”A B” | sed ‘s/A/ & C/g’  结果 A C B

删除首字符

$ echo “abc.doc” | sed s/^.//g  结果 bc.doc

增加扩展名

$ echo “abc” | sed s/$/.doc/g  结果 abc.doc

 

sed 在 shell 中的应用 

sed 用于删除 所有文件的空行

#!/bin/sh
#forsed
for files in `ls fo*`
do
sed -e "/^$/d" $files >$files.hold
mv $files.hold $files
done

原创粉丝点击