Linux - sed命令详解
目录
sed命令
01.sed是什么?
sed全称是:Stream EDitor(流编辑器),是对文本字符串流进行过滤和转换(替换和删除)的编辑器。
02.sed的模式空间和保留空间
03.sed语法格式
1、sed [选项] sed编辑命令 输入文件
2、shell 命令 | sed [选项] sed编辑命令
3、sed [选项] -f sed脚本文件 输入文件
04.sed常用选项
-n:只显示匹配处理的行(否则会输出所有的行)
-e:执行多个编辑命令时(一般用;代替)
-r:直接在文件进行修改,而不是输出到屏幕
-i:支持扩展正则
-n选项
# 输出第一行
[root@localhost 7.6]# sed -n '1p' passwd
root:x:0:0:root:/root:/bin/bash
# 输出最后一行
[root@localhost 7.6]# sed -n '$p' passwd
mengmeng3:x:9943:9944::/home/mengmeng3:/bin/bash
# 输出第一行和第五行
[root@localhost 7.6]# sed -n '1p;5p' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
示例:查看以liu开头的行
[root@localhost 7.6]# sed -n '/^liu/p' passwd
liudehua:x:1022:1022::/home/liudehua:/bin/bash
-i选项
-i选项会直接在原文进行修改,不会输出到屏幕
原文本:
[root@localhost 7.6]# cat fan.txt
wo ai chi fan ming you
fan ming you fan ming you
将以fan开头的替换为liu
[root@localhost 7.6]# sed -i '/^fan/ s/fan/liu/g' fan.txt
[root@localhost 7.6]# cat fan.txt
wo ai chi fan ming you
liu ming you liu ming you
将ai替换为111
[root@localhost 7.6]# sed -i 's/ai/111/g' fan.txt
[root@localhost 7.6]# cat fan.txt
wo 111 chi fan ming you
liu ming you liu ming you
05.sed常用编辑命令
p:打印匹配行 print
d:删除指定行 delete
a:在匹配行后面追加 append
i:在匹配行前面插入insert
c:整行替换
r:将文件的内容读入 read
w:将文本写入文件 write
s:字符串替换(匹配正则表达式)substitution
=:输出行号
p命令:
不连续的输出多行, ;是命令连接符
[root@localhost 7.6]# sed -n '1p;3p;5p' passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
连续输出多行
[root@localhost 7.6]# sed -n '1,5p' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
1~2p,从第一行开始,步长为2,每次间隔2行输出
[root@localhost 7.6]# cat -n passwd | sed -n '1~2p' | head -10
1 root:x:0:0:root:/root:/bin/bash
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
15 dbus:x:81:81:System message bus:/:/sbin/nologin
17 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19 chrony:x:998:996::/var/lib/chrony:/sbin/nologin
c命令
1.修改主机名/etc/hostname里的内容为你自己的名字
[root@localhost 7.6]# cat /etc/hostname
lcoalhost.localdomain
[root@localhost 7.6]# sed -i '1c wangsh' /etc/hostname
[root@localhost 7.6]# cat /etc/hostname
wangsh
s命令
2.修改selinux策略/etc/selinux/config里的SELINUX=enforcing修改为SELINUX=disabled
[root@localhost 7.6]# sed -i '/^SELINUX=/ s/enforcing/disabled' /etc/selinux/config
3.禁用网卡 /etc/sysconfig/network-scripts/ifcfg-ens33的ONBOOT="yes"修改为ONBOOT="on"
[root@localhost network-scripts]# sed -i '/^ONBOOT=/s/yes/no/' ifcfg-ens33
[root@localhost network-scripts]# cat ifcfg-ens33
BOOTPROTO="none" # 指定获得ip地址的引导协议,dhcp说明是动态获得,none是静态
NAME="ens33" # 网卡名字
UUID="20641fea-634f-424c-b9ea-3e2c6db49ea3" # 设备的唯一标识符
DEVICE="ens33" # 设备的名字
ONBOOT="no" # 系统启动的时候激活网卡,yes标识激活,no禁用
IPADDR=192.168.44.132 # 建议ip地址不能和别人冲突
NETMASK=255.255.255.0 # 指定子网掩码
GATEWAY=192.168.44.2 # 指定网关
DNS1=114.114.114.114 # 首选dns服务器
#DNS1=192.168.44.0 # 备用dns服务器
练习:
练习:
1.sed取出/etc/passwd文件的第一列
2.sed将PATH环境变量中的冒号换成换行 ->可以将PATH变量的内容重定向到一个文件里,例如path.txt
3.sed将PATH环境变量斜杠/换成斜杠\
4.sed修改SELINUX配置文件从开启(enforcing)变成禁用(disabled)
/etc/sysconfig/selinux
5.去掉/etc/passwd文件中第二个字段的x
6.将/etc/sysconfig/network-scripts/ifcfg-ens33里的ONBOOT=no修改为yes或者修改下IPADDR后面的ip地址,具体ip自己定义
7.只显示ip add的ip地址
8.复制/etc/ssh/sshd_config到当前目录下,修改里面的端口号修改为8899
将#Port 22 配置修改为Port 8899 要求去掉前面的#号,将22修改为8899
9.给下列含有大写字母的行,在大写字母后追加数字2022 --》sed
abcdSdddde
islHishbxld
goBkefji
daanshXxge
不要直接对上面的源文件进行操作,建议复制到当前文件夹里进行
相关文章
- linux 命令速查
- Linux命令:ps,netstat,top
- 【Linux】linux常用查看命令
- 退出linux控制台不退出启动应用命令
- linux命令分享(四):iostat
- linux grep命令详解
- Linux命令的返回码列表
- Linux TOP命令详解
- 【Linux基础】crontab定时命令详解
- Linux装B命令
- Linux xshell窗口批量命令编辑功能(发送键输入到所有窗口)
- Linux系统负载查看命令合集
- Linux下主机间文件传输命令
- L73.linux命令每日一练 -- 第十章 Linux网络管理命令 -- dig和host
- L67.linux命令每日一练 -- 第十章 Linux网络管理命令 -- netstat和ss
- L44.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- su和visudo
- L2.linux命令每日一练 -- 第一章 Linux命令行简介
- 优化Linux系统性能的必杀技:调整进程优先级!学会使用nice命令,让你的系统飞一般的顺畅!
- 嵌入式Linux开发,Ubuntu22下交叉编译报错:make[1]: aarch64-linux-gnu-gcc: No such file or directory
- Linux基础命令-gdisk使用GPT类型创建分区
- 【Linux】linux经常使用基本命令