Sed学习笔记

1.注释一行

sed -e 's/.*/#&/' file

其中&是替换元字符,代表正则表达式所匹配到的内容

2.替换

sed -e 's/reg/newstr/g' file
sed -e 's/\(reg\)/\1newstr/g' file

其中\(reg\)可以在替换字符串中通过\1 \2这种方式引用

/reg/\
/g

将某符合正则的串替换为换行符,这种写法一般用在sed脚本文件中。

3.删除

sed -e '1d' file
sed -e '/^$/d' file

删除命令会删除符合正则的一整行,并且脚本回到脚本开头,读入新的一行。

4.追加

sed -e '1a hhh' file

追加命令在模式空间的下一行添加字符串

5.更改

sed -e '1c newstr' file

将模式空间替换为newstr,即符合条件的那一行被替换成newstr

6.插入

sed -e '2i insertstr' file

将innsertstr插入到第二行之前

7.转换

sed -e '1,3y/abc/ABC/' file

将指定范围内的a,b,c分别替换成A,B,C

8.打印行号

sed -e '/reg/=' file

打印符合某正则的行号

9.下一步

/reg/{
n
/^$/d
}

找到符合reg的下一行,如果是空行就删除

10.写文件

sed '1,2w newfile' file

会将file文件的1,2两行写入newfile,如果newfile没有会自动创建,该写入是覆盖式写入

11.读文件

sed '1,2r file2' file1

将file2文件全部内容读入到file1的1行下面

12.退出执行脚本

sed '1q' file

到第一行就退出

13.追加下一行

/reg/{
N
s/reg1/val/
}

将符合reg的下一行读取到模式空间,然后执行操作,N后面的正则,^表示整个模式空间的开始,$表示整个模式空间的结尾,而不是每一个独立航的换行

14.缓存某个字符串

h,H,g,G,x

h将模式空间的内容保存到保持空间,其会刷新保持空间,H将模式空间的内容追加到保持空间。

g将保持空间的内容取回到模式空间,其会刷新模式空间,G将保持空间的内容追加到模式空间

x交换保持空间与模式空间。

例子:交换1与2的位置

111
222
1111
2222
11111
22222

脚本:

/1/{
h
d
}
/2/{
G
}

解读,先匹配包含1的行,把这一行存入保持空间,并删除这一行,这样脚本读入新的一行从头执行,读入222,匹配/2/,用保持空间的内容替换模式空间的内容

15.分支

[address]b
[address]b label
:label

b后面接标签,类似于c的jump,如果后面不接,那么执行流会直接走到脚本底部

例子:

:top
command1
command2
/reg/b top
command3

这段脚本command1,command2先执行,如果模式符合reg,那么执行流会回到command1,又走一遍command1,command2,然后再判断是否符合模式,最后执行command3。

command1
/reg/b end
command2
:end{
command3
command4
command5
}

标签执行多个命令

16.测试命令

[address]t [label]

如果在当前行执行了成功的替换,那么t命令会转到标签,t后面如果不接标签就走到脚本末尾,类似c的switch case

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值