sed命令基础用法

sed命令基本用法

sed的工作模式: sed是一个行文本编辑器,默认每次处理文本中所匹配到一行内容到模式空间,然后用后面的命令进行操作,操作完成之后,会把模式空间里面的内容实现在屏幕上,然后把模式空间的中的内容删除,同时把下一行所匹配到内容读入模式空间

sed命令的语法

语法格式:

[address]command
[line-address]command

command:命令(简单用法)

p:打印模式空间中行
d:删除,删除选择的行
r file:读取file中的内容追加到匹配的行后面
R file:读取file中的内容的第一行追加到匹配行的后面
w file:将匹配到的行,保存到file中
W file:将匹配到的行的第一行,保存到file中
a \string 在当前行下面插入文本。
i \string 在当前行上面插入文本。
! 表示后面的命令对所有没有被选定的行发生作用.
y 和s用法类似,但只能替换大小写
s/patten/string/ 把patten匹配到的换成string字符

还可以使用正则表达式元字符

^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。

* 匹配一个非换行符的任意字符,如:/s*d/匹配s后接一个任意字符,最后是d。

sed替换标记:

g表示全局替换
\1表示前面第一个左括号所表示的内容,\2表示前面第二个左括号中表示的内容,以此类推
&表示前面匹配到的内容

示例

常用的编辑命令就只有

d删除

a追加

i插入

c更改

s替换

y转换

n下一步

删除(d)

1d删除第一行

[root@localhost ~]# sed '1d' llao
asrsae
zxcvz
plplp
Why are you so skilled?
pure oxygen
[root@localhost ~]# cat llao
456
asrsae
zxcvz
plplp
Why are you so skilled?
pure oxygen

删除最后一行

[root@localhost ~]# sed '$d' llao
456
asrsae
zxcvz
plplp
Why are you so skilled?

删除所有空行

[root@localhost ~]# sed '/^$/d' llao 
456
asrsae
zxcvz
plplp
Why are you so skilled?
pure oxygen
asd

删除以pure开头的行

456
asrsae
zxcvz
plplp
Why are you so skilled?



asd

替换(s)

查看内容

[root@localhost ~]# cat llao 
456
asrsae
zxcvz
plplp
Why are you so skilled?
pure "oxygen"
asd

将pure开头的那一行的pure删除并去掉""

[root@localhost ~]# sed '/^pure/{s/pure //;s/"//g}' llao 
456
asrsae
zxcvz
plplp
Why are you so skilled?
oxygen
asd

替换as开头的两行为sed

[root@localhost ~]# sed '/^as*/{s/.*/sed/g}' llao 
456
sed
zxcvz
plplp
Why are you so skilled?
pure "oxygen"
sed

更改©

更改和替换的区别,替换可以替换掉那一行的某一个字段,而更改只能替换掉这一行里的所有东西

[root@localhost ~]# sed '/^Why/clp' llao  //将Why开头的那一行换成lp
456
asrsae
zxcvz
plplp
lp
pure "oxygen"
asd

我们之前的操作可以优化,替换as开头的两行为sed

[root@localhost ~]# sed '/^as*/csed' llao 
456
sed
zxcvz
plplp
Why are you so skilled?
pure "oxygen"
sed

更改的时候还可以让前面多几个空格

[root@localhost ~]# sed '/^as*/c\   sed' llao 
456
   sed
zxcvz
plplp
Why are you so skilled?
pure "oxygen"
   sed

还可以那一行中间多一个tab

[root@localhost ~]# sed '/^as*/cse\td' llao 
456
se      d
zxcvz
plplp
Why are you so skilled?
pure "oxygen"
se      d

追加(a)

可以在指定的那一行的后面增加一行新内容

[root@localhost ~]# sed '/^Why/anihao' llao 
456
asrsae
zxcvz
plplp
Why are you so skilled?
nihao
pure "oxygen"
asd

所有as开头的后面都增加一行nihao

[root@localhost ~]# sed '/^as*/anihao' llao 
456
asrsae
nihao
zxcvz
plplp
Why are you so skilled?
pure "oxygen"
asd
nihao

插入(i)

可以在指定的那一行的直接添加文本,会将原来的文本顶到下一行

在456前面插入一个nihao

[root@localhost ~]# sed '/456/inihao' llao 
nihao
456
asrsae
zxcvz
plplp
Why are you so skilled?
pure "oxygen"
asd

在前三行前插入一个nihao

[root@localhost ~]# sed '1,3inihao' llao 
nihao
456
nihao
asrsae
nihao
zxcvz
plplp
Why are you so skilled?
pure "oxygen"
asd

转换(y)

将文本里所有内容都换成大写内容

[root@localhost ~]# sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' llao 
456
ASRSAE
ZXCVZ
PLPLP
WHY ARE YOU SO SKILLED?
PURE "OXYGEN"
ASD

将第四行的p全部替换成l

[root@localhost ~]# sed '4y/p/l/' llao 
456
asrsae
zxcvz
lllll
Why are you so skilled?
pure "oxygen"
asd

下一步(n)

用n匹配到这一行后不对这一行进行操作,而是操作下一行

[root@localhost ~]# sed '/^Why/{n;s/pure //;s/"//g}' llao   
456
asrsae
zxcvz
plplp
Why are you so skilled?
oxygen
asd

将Why开头的文本的下一行的pure去掉并且去掉""

[root@localhost ~]# sed '/^Why/{n;s/pure /pure\n/;s/"//g}' llao 
456
asrsae
zxcvz
plplp
Why are you so skilled?
pure
oxygen
asd

将pure “oxygen"中间换行并去掉”"

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值