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

Linux下sed用法

2010-10-20 14:49 344 查看
sed
sed是一个非交互性文本流编辑器,它编辑文件或标准输入导出的文本拷贝。标准输入可能是来自键盘、文件重定向、字符串或变量,或者是一个管道的文本。(注意:sed从来不与初始化文件打交道,它操作的只是一个拷贝。然后所有的改动如果没有重定向到一个文件,将输出到屏幕。)
sed怎样读取数据
sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后通过查找模式或定位行号编辑它。重复此过程直到命令结束。
调用sed
sed [选项] ‘sed命令’ 输入文件
使用sed在文件中查询文本的方式,缺省从第一行开始,有两种方式定位文本。
第一种:使用行号,可以是一个简单数字,或是一个行号范围。
第二种:使用正则表达式
sed在文件中定位文本的方式
xx为一行号,例如1
x,y表示行号范围从x到y,例如2,5表示从第2行到第5行
/pattern/ 查询包含模式的行。例如/disk/或/[a-z]/
x,y! 查询不包含指定行号x和y的行。例如1,2!
基本sed编辑命令
p

打印匹配行

=

显示文件行号

a/

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

i/

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

d

删除定位行

c/

用新文本替换定位文本

s

使用替换模式替换相应模式

r

从另一个文件读文本

w

写文本到一个文件

q

匹配后退出

基本sed编程举例
1)使用p显示编辑行
sed -n ‘2’p /etc/passwd
print命令格式为[address[ ,address]p
,sed默认是打印所有行,因此要指定-n,表示不打印。
2)打印范围
sed -n ‘1,3’p /etc/passwd
4)打印模式
sed -n ‘/root/’p /etc/passwd
5)显示整个文件
要打印整个文件,只需将行范围设为第一行到最后一行1,$。$为最后一行。
sed -n ‘1,$’p /etc/passwd
6)打印行号
sed -n ‘/root/’= /etc/passwd
7)打印匹配行及行号
sed -n -e ‘/root/’= -e ‘/root/’p /etc/passwd
8)附加文本
sed ‘/root/’a/ ‘这是新加入的行’ /etc/passwd
根据模式会在匹配的行后面附加文本
9)插入文本
sed ‘/root/’i/ ‘这是新加入的行’ /etc/passwd
根据模式会在匹配的行前面插入文本
10)修改文本
sed ‘/root/’c/ ‘这是修改过的文本’ /etc/passwd
根据模式会用新文本替代匹配的行
11)删除文本
sed ‘/root/’d /etc/passwd
根据模式删除匹配的行
12)替换文本
sed ‘s/root/system/g’ /etc/password
将文本中的root替换成system
g默认情况下只替换第一次出现的文本,使用g选项替换全局所有匹配模式的文本。
w 文件名将替换后的行写入一个文件。
13)从文件中读文本
sed '/the/'rinput.out output.out
将input.out读进来,附加到output.out中匹配模式的行后面
14)匹配后退出
sed ‘/root/’q /etc/passwd
找到匹配的一行后即刻退出sed
15)sed脚本编写
test.sed
#!/bin/sed -f
/root/ a/ 这是新加入的行
调用sed脚本
./test.sed /etc/passwd
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: