sed 参考

语法:

sed [选项] [sed内置命令字符] file

选项

参数选项
参数解释
-n取消 sed 的默认输出,常与 sed 内置命令 p 一起使用
-i直接将修改数据写入文件,一般使用 -i.bak 在修改之前备份
-e支持多次编辑,不需要管道符
-r支持扩展正则

内置命令符

内置命令字符
解释
aappend 对文本追加,在指定行后面添加一行(多行)内容
ddelete 删除匹配行
iinsert 表示插入文本,在指定行之前插入一行(多行)内容
pprint 打印匹配到的内容,通常和 -n 一起使用
s/正则/替换内容/g匹配正则内容,然后替换(支持正则),结尾 g 表示全局匹配

sed 匹配范围

范围
解释
空地址全文处理
单地址指定文件某一行
/pattern/被模式匹配到的每一行
范围区间10,20 十到二十行, 10,+5 第十行向下5行
步长1~2,表示从1开始间隔2个,即1/3/5/7 , 2~2,表示从2开始间隔2个,即2/4/6/8

匹配符
解释
^锚定行的开始 如:/^sed/匹配所有以sed开头的行
$锚定行的结束 如:/sed$/匹配所有以sed结尾的行
.匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d
*匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行
[]匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed
[^]匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行
(…)保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers
&保存搜索字符用来替换其他字符,如s/love/&/,love这成love
<锚定单词的开始,如:/\
>锚定单词的结束,如/love&gt;/匹配包含以love结尾的单词的行
x{m}重复字符x,m次,如:/0{5}/匹配包含5个o的行
x{m,}重复字符x,至少m次,如:/o{5,}/匹配至少有5个o的行
x{m,n}重复字符x,至少m次,不多于n次,如:/o{5,10}/匹配5–10个o的行

练习题:

1.替换文件中的 root 为 dong ,只替换一次和替换所有

# 替换一次
sed 's/root/dong/p' pwd.txt  -n
# 全部替换
sed 's/root/dong/gp' pwd.txt  -n

2.替换前十行 b 开头的用户,改为 D ,且仅仅显示替换后的结果

sed '1,10s/^b/D/p' pwd.txt -n

3.替换前十行 b 开头的用户,改为 D, m 开头的行改为 M ,且仅仅显示替换后的结果

sed -e '1,10s/^b/D/p' -e '1,10s/^m/M/p' pwd.txt -n

4.删除4行后面所有的

# 这里是从第五行一直删到结尾
sed '5,$d' pwd.txt

5.删除从 root 开始到 ftp 之间的行

sed '/^root/,/^ftp/d' pwd.txt

6.将文件中空白字符开头的行添加注释

sed 's/^[[:space:]]/#/p' test.txt -n
# 将空行也添加注释
sed -e 's/^[[:space:]]/#/p' -e 's/^$/#/p'  test.txt -n

7.删除文件的空白行和注释行

sed -e '/^$/d' -e '/^#/d' test.txt
sed '/^$/d;/^#/d' test.txt

8.给文件的前三行添加 #

# \1 表示引用前面分组的内容
sed -r '1,3s/(^.)/#\1/' test.txt

9.使用 sed 截取出 ip 地址

ifconfig eth0 | sed '2p' -n | sed 's/.*inet[[:space:]]*//' | sed 's/netmask.*//'
or
ifconfig eth0 | sed '2s/.*inet[[:space:]]*//;s/netmask.*//p' -n

10.找出系统版本
在这里插入图片描述

# 命令解析
# .*release[[:space:]]*    匹配到 release 包括后面的空格
# [[:space:]]*             表示多个空格
# ([^.])                   表示匹配除了小数点以外的所有内容,() 括号表示分组,为后面 \1 引用
# .*                       表示后面的一个或者多个
# +                        表示贪婪匹配,即匹配 . 之前的多个内容
sed -r 's/.*release[[:space:]]*([^.]).*+/\1/p' /etc/centos-release -n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值