正则表达式
sed
流式编辑器
非交互,基于模式匹配过滤及修改文本
语法格式
sed [选项] ‘编辑指令’ 文件名
选项
- -n:屏蔽默认输出
- -i:直接修改文件内容
- -r:日用扩展正则
编辑指令:条件+指令
条件:
行号
/正则/
指令:
p:输出(print)
打印第一行
sed -n '1p' passwd
打印1~4行
sed -n '1,4p' passwd
打印第三行,第五行
sed -n '3p,5p' passwd
打印第三行之后的十行
sed -n '3,+10p' passwd
打印奇数行步长
sed -n '1~2p' passwd //1奇数 2偶数
正则
包含root的行
grep root passwd
sed -n '/root/p' passwd
以root开头的行
sed -n '/^root/p' passwd
以bash结尾的行
sed -n '/bash$/p' passwd
删除指令:d
替换指令:s
's/old/new' 替换第一个
's/old/new/' 替换第三个
's/old/new/g' 替换所有
/分隔符也可以用#、¥
输出行数:
sed ‘$=’ passwd
删除最后一行
sed -n ‘$d’ passwd
文本行操作:
i:行前添加文本
a:行后添加文本
c:替换指定行
修改主机名:
vim modify_hostname.sh
#!/bin/bash
//hostname liu.com
sed -i '1c liu.com' /etc/hostname //1c是指令
hosts文件
本地域名解析文件
sed -l ‘1a 127.0.0.1 tedu.cn’ /etc/hosts
用户管理
命令:useradd /groupadd /userdel /groupdel
文件:
etc/passwd //用户详细信息
root❌0:0:root:/root:/bin/bash
以#作为分隔符
- 用户名
- 密码占位符
- UID
- GID
- 描述信息
- 家目录
- 登陆shell -s
/bin/bash :默认登陆shell,可以作为登陆用户
/sbin/nologin:非登陆shell
etc/shadow //用户的密码文件
列出bash结尾的行并存到变量中
- 根据此变量,for循环进行处理–以:为分分隔符从右王座最远删除
- 根据用户名列出对应的密码文件的行并存到变量中
- 根据此变量,for循环进行出路,掐头去尾获得密码信息
- 输出用户名–>密码信息