linux sed取第三行和第5行,shell笔记(五)sed命令

一.sed简介sed:是一个编辑器,是一个强大的文件处理工具。

sed作用:用来替换、删除,更新文件中的内容。sed能自动处理一个或多个文件。

sed原理:sed以文本的行为单位进行处理,一次处理一行内容。首先sed把当前处理的行存储在临时缓冲区中(称为模式空间pattern space),接着处理缓冲区中的行,处理完成后,把缓冲区的内容送往屏幕。sed处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示,这样不断的重复,直到文件末尾。处理完文件的最后一行后,sed便结束运行。

因为sed是对文件中每行在临时缓冲区中的副本进行编辑,所以原文件内容并没有改变,除非重定向输出。

二 sed命令

命令           功能

a\              在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行

c               用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行

i\               在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行

d                删除行

h              把模式空间里的内容复制到暂存缓冲区

H              把模式空间里的内容追加到暂存缓冲区

g                 把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容

G                把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面

l                列出非打印字符

p                打印行

n                读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理

q                结束或退出sed

r                从文件中读取输入行

!                对所选行以外的所有行应用命令

s                用一个字符串替换另一个

g                在行内进行全局替换

w                 将所选的行写入文件

x                交换暂存缓冲区与模式空间的内容

y                将字符替换为另一字符(不能对正则表达式使用y命令)

三 sed 选项

-e进行多项编辑,即对输入行应用多条sed命令时使用

-n取消 默认的输出

-f指定sed脚本的文件名

-i         决定不是是将sed的操作作用在源文件上

-r使用 多个sed命令

四 地址定位

x 指定x行号

x,y 指定x到y行号

/key/ 查询包含关键字的行

/key1/,/key2/  匹配包含两个关键字之间的行

/key/,x  从匹配关键字开始到文件第x行

x, /key/ 从第x行开始到与关键字的匹配行之间的行

x,y! 不包含x到y行

五举例说明1.sed -n '2,5p' 1.txt 打印第二行到第五行,n和p结合使用

2.sed '2,5d' 1.txt 删除第二行到第五行

3.sed '1ihello world' 1.txt 在第一行前面插入hello world

4.sed '1ihello\nworld' 1.txt 在第一行前面插入hello world,换行之后插入world

5.sed '1ihello\ 在第一行前面插入hello world,换行之后插入world

world\           在换行之后插入999

999\' 1.txt

6.sed '5ahello world' 1.txt 在第5行的下面插入hello world

7.sed 'ahello world' 1.txt 在每一行的下面插入hello world

8.sed 'ihello world' 1.txt 每一行的前面插入hello world

9.sed '$ihello world' 1.txt 每最后一行的前面插入hello world

10.sed '$ahello world' 1.txt 每最后一行的下面插入hello world

11.sed '3chello world' 1.txt 把第三行替换成hello world

12.sed '10r 2.txt' 1.txt 把文件2.txt的内容输入到1.txt的第10行下面

13.sed -n '1!p' 1.txt 打印第一行之外的所有行

14.sed '1,5w 2.txt' 1.txt 将1.txt中的第一行到第五行保存到2.txt中

15.sed '1,5w./home/2.txt' 1.txt 将1.txt中的第一行到第五行令外保存到2.txt中(2.txt

可以没有,系统会创建)

16.sed -n 's/root/ROOT/p' 1.txt 替换一行内第一个满足条件的

17.sed -n 's/root/ROOT/gp' 1.txt替换一行内所有满足条件的

18.sed -n '5,/^stu/p' 1.txt 从第五行开始匹配以stu开头的行

19.sed -rn '^lp|^mail/p' 1.txt匹配以lp开头或mail开头的行

20.sed ‘y/uu/Y#/’ 3.txt 将所有的u替换成Y

21.sed -n 's/^root/#&/p' 1.txt 注释掉root开头的行

22.sed -n '/nologin$/=' 1.txt 打印以nologin结尾的行号

23.sed -i 's/ui/98/;s/123/poi/' 3.txt 修改文件内容

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值