sed基础应用与高级应用

sed非交互式文本编辑器介绍
目的:主要用于shell脚本
特点:
改变文件内容
非交互
一次处理一行
sed命令格式(正则)
格式1:前置命令 | sed 选项 ‘条件命令’ 
格式2:sed 选项 ‘条件指令’ 文件
条件可以是行或是正则 即的处理对象

常用选项
-n 屏蔽默认输出
-i 直接修改文件内容
-r 启用扩展正则表达式


返回值基本都是0
常用选项
1. 打印
1.使用行号
sed -n 'np' /etc/passwd 打印第n行
sed -n 'n1,n2p' /etc/passwd 打印第n1到n2行
sed -n 'n1,+n2p' /etc/passwd 打印第n1到n1+n2行

2.使用正则
sed -n '/^root/p' /etc/passwd 正则在/ /号内
sed -n '$=' /etc/passwd 显示
2. 删除(不加-i 则不保存)
行号
sed '3d'   /etc/passwd 
sed '1,5d' /etc/passwd 
sed '1d;5d' /etc/passwd 删除第1行和第5行
正则
sed '/root/!d' /etc/passwd 不删除root行
3.替换

正则替换一个词
s/[0-9]&/xx/ 将每行的第一个行尾[0-9]替换为xx
s#/abc/def#/aaa/bbb# 也是可以的

sed -r 's/[0-9]&/xx/' password

行数一个词
s/abc/xx/3 将每行的第三个abc替换为xx
s/abc/xx/g 将每行所有的abc替换为xx

g:全局替换

整行替换
将第2行替换为123123
sed -r '2c 123123' passwd.txt


p:打印被替换的行
sed -n '1,7s/^/#/p' /etc/password 将1-7行的空改为# 相当于对该行添加注释符 
sed -n 's/[0-9]//gp' 将数字替换为空 [a-Z]

sed -n 's/lili//gp' passbak 将lili替换为空,并且显示被替换的行 
/的分隔符可以使用#,&作为替换
将/bin/bash替换为/sbin/sh 
sed '//bin/bash//sbin/sh/g' passbak (不正确)
sed '/\/bin\/bash/\/sbin\/sh/g' passbak (转义 正确)
sed -n 's&/bin/bash&/sbin/sh& g' (正确)
4. 导入/导出(导入是添加,但是导出是覆盖)
导入 将其他文件内容写入这个文件里面
导出 将文件内容导出成新的文件
sed 'r 1.txt' test.txt 将1.txt导入test.txt 读一行导入一次
sed 'w 2.txt' 1.txt 将1.txt导出成为2.txt
sed '1r 1.txt' test.txt 将test.txt的全部内容导入到1.txt的第一行下面
sed '2w 3.txt' 1.txt 将1.txt的第二行导出为3.txt,且是覆盖并非追加
5.读文件

将1.txt追到到password的最后一行
sed -r ‘$r 1.txt’ password

6.写文件(另存为)

将passwd写到222.txt中
sed -r ‘w 222.txt’ passwd.txt

7.追加命令(在某行后追加命令)

在root用户的下一行添加11111
sed -r ‘/^root/a 11111’ passwd.txt

8.插入命令(在某行前追加)

sed -r ‘/^root/i11111’ passwd.txt

插入多行:

cat <<EOF>$Path/Base.repo
EOF

sed命令
常用命令 查询np 删除nd 替换s/abc/xx 导入导出
正则表达式 查询 删除 替换

常用操作
为某行添加注释
`sed -i '5s/^/#/' example.txt`:这是`sed`命令的使用,其中:

- `5s`:表示对第5行进行替换操作。
- `^`:表示行的开头。
- `#` :添加的注释符号,你可以根据需要添加任何注释内容。
- `example.txt`:要处理的文件名。

为文件末尾添加行
sed -ri ‘$a xxxx’ /etc/passwd

为文件末行进行修改
sed -ri ‘/^SELINUX=/c SELINUX=diasbled’ /etc/selinux/config

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值