正则表达式
使用若干符号配合某工具对文档进行增删改查等操作
grep 支持正则表达式 (基本正则)
egrep / grep -E 支持扩展正则
grep -v取反
以下是正则表达式的应用
grep [rot] user
grep [^rot] user
grep "[0-9]" user
grep "[^0-9]" user
grep "[a-z]" user
grep "[^a-z]" user
grep "[^a-Z]" user
grep "[^a-Z 0-9]" user
grep "[a-Z 0-9]" user
grep "r..t" user
grep ".*" user
grep "." user
grep "ro\{1,2\}t" user
grep "ro{2,6}t" user
grep "ro\{1,\}t" user
grep "ro\{2\}t" user
grep "\(0:\)\{2\}" user
grep "\(3:\)\{1\}" user
扩展正则
以下是扩展正则表达式的应用
grep "ro\{0,1\}t" user
egrep "ro{0,1}t" user
egrep "ro?t" user
egrep "root|^bin" user
egrep "bin\b" user
egrep "\bbin\b" user
sed 流式编辑器 增删改查处理文档 非交互式 支持正则表达式
用法
前置命令 | sed [选项] '条件指令'
sed [选项] '条件指令' 文件...
选项
-n 屏蔽默认输出 =显示行号 !取反 $= 输出最后一行行号
-r 支持扩展正则
-i 修改源文件
指令 (指令写在单引号里
指令前加/ 表示匹配字符串)
p 输出
d 删除
s 替换
=显示行号 !取反 $= 输出最后一行行号
sed -n '2p' user
sed -n '2!p' user
sed '3,+1!d' user
sed -n '='user
sed -n '=' user
sed -n '$=' user
sed -i '$d' user 取反
sed 's/2017/6666/' test.txt
sed 's/2017/6666/2'test.txt
sed 's/2017/6666/2' test.txt
sed '1s/2017/6666/' test.txt
sed '3s/2017/6666/3' test.txt
sed '3s/2017//3' test.txt 将第三行第三个2017删除
sed '/2024/s/2017/6666/' test.txt 将2024行中的2017替换成6666
sed '/root/s/\/bin\/bash/\/sbin\/sh/' user
sed '1s#bin/bash#/sbin/sh#' user 更改s替换符
编写脚本,配置http服务 82号端口开启
#!/bin/bash
yum -y install httpd &>/dev/null
sed -i '42s/0/2/' /etc/httpd/conf/httpd.conf
systemctl restart httpd
systemctl enable httpd
echo "web-test~~~" > /var/www/html/index.html
setenforce 0
[root@svr7 opt]# getenforce
Permissive
[root@svr7 opt]# curl 192.168.4.7:82
指令
a 行下追加
i 行上添加
c 替换整行
编写脚本,找到使用bash的账户名,按照用户名-->密码的格式存在一个文件里
#!/bin/bash
u=$(sed -n '/bash$/s/:.*//p' /etc/passwd )
for i in $u
do
pass=$(grep $i /etc/shadow)
pass1=${pass#*:}
pass2=${pass1%%:*}
echo "$i --> $pass2"