Linux下sed用法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值