网站架构怎么做,wordpress金融模板下载,ppt怎么做网站,小程序开发兼职要多少钱目录 正则表达式拓展元字符正则判断数据类型递归查找文件内容sed 的使用 正则表达式
# 支持扩展正则表达式#xff0c;即o{3}表示匹配3个字母o。
grep -E o{3} /etc/passwd
# 指定使用Perl兼容的正则表达式#xff0c;即\s表示匹配一个空格。
grep… 目录 正则表达式拓展元字符正则判断数据类型递归查找文件内容sed 的使用 正则表达式
# 支持扩展正则表达式即o{3}表示匹配3个字母o。
grep -E o{3} /etc/passwd
# 指定使用Perl兼容的正则表达式即\s表示匹配一个空格。
grep -P \s /etc/passwd
# \d表示匹配一个数字字符
grep -P \d /etc/passwd
#格式
grep {^{内容}} {文件路径}# 基本元字符# 行首定位符
^{内容}# 行尾定位符
{内容}$# 点可以表示一个字符
{a.b} 可以匹配到 abc# 前导字符 零到多次 这里是就是匹配a 零次 或者多次
{a*b} 可以匹配到 abc# 中间任意字符
{a.*b}# 按照范围去匹配
[afl]o ao fo lo# 匹配到一个字符 这个字符是小写字母 或者 数字
[a-z0-9]# 匹配到多个字符 这个字母是大写字符
[A-Z]# 匹配到五个大写字母
[A-Z]{5}# 尖号 在这里是取反的意思
[^afl]o# 词首定位符
\
\love# 词尾定位符
\
love\
拓展元字符
grep -E | egrep 两个命令都支持扩展元字符# 匹配一个任意字符
.# 匹配 零个或多个前导字符
*# 匹配多个任意字符
.*
egrep r.*t /etc/passwd# 匹配一个 或者多个签到多个
?
egrep va? /etc/passwd# 匹配两个关键词
|
egrep root|bash /etc/passwd# 过滤组合
egrep a(b|c|d)
只能过滤出来 ab ac ad# 过滤某个字符串重复 次数
egrep o{2} /etc/passwd# 过滤某个字符串重复 次数
x{m,n} 字符x重复m到n次# 字符次数控制
x{m} 字符x重复m次
o{5}
o{,3} 字符最多出现3次
x{m,} 字符x重复至少m次
o{5,} 字符最少出现5次# -v可以取反
grep -v \[A-Z] a.tx正则判断数据类型 {等于} ! {不等于} ~ {匹配}注意 在脚本中判断某个便令的样式哈
read -p请输入 get_var
if [[ $get_var ~ ^[0-9]$ ]]; thenecho 变量是数字
elseecho 变量不是数字
fi# 判断一个数字
^[0-9]$# 判断一个浮点数
^[0-9]\.[0-9]$# 匹配数字个数 为11位
^[0-9]{11}$# 匹配一个域名
^[a-z0-9]$\.[a-z]$
# 判断一个数字是不是11位
num1234567890if [[ $num ~ ^[0-9]{11}$ ]]; thenecho 变量是手机号码
elseecho 变量不是手机号码
fi# 判断是不是一个域名
num123dfs45.con:155if [[ $num ~ ^[a-z0-9]\.[a-z]:[0-9]$ ]]; thenecho yes
elseecho no
fi
递归查找文件内容
# -r 选项表示递归搜索 可以返回 文件路径和内容grep -r root /etc/ # -o 选项表示只输出匹配行的内容即不包含文件名和行号grep -r -o root /etc/# 把正则符号当作 字符串查询grep -F .* /etc/ ## ps 查找进程的 取消grep 取反
## 这样的作用是 在使用grep 查询某个进程的时候 可以 不看到grep 这个进程ps aux | grep ssh | grep -v grepsed 的使用
在工作环境中不要对 passwd 文件进行操作 此处仅仅作为一个演示
# -i可以对文件直接替换(-i 一定会替换)
sed -i s/root/ROOT/g /etc/passwd# -r 是扩展元字符
sed -r s/root/p /etc/passwd# -n 加上之后只显示 查找的内容
sed -n /root/p /etc/passwd# 对root 进行替换
sed s/root/ROOT/g /etc/passwd# /root/d 删除带有root 的行
sed /root/d /etc/passwd# 把带有root 的行 复制打印
sed /root/p /etc/passwd# -n 会只输出 带有root 的行
sed -n /root/p /etc/passwd# 对内容继续替换
sed s/root/ROOT/g /etc/passwd
# 对文件进行替换## 永久关闭selinuxsed -r -i s/^SELINUX[a-z]/SELINUXdisabled/ /etc/selinux/config
5d 删除某行
5p 复制某行 带上参数 -n 可以只打印某几行
^ 可以替换为一个内容 后边加上一个/n 就可以作为一个第一个行来用了passwd 是一个复制过来的文件# 删除 某行## 删除 第五行
sed 5d passwd# 删除 一到五行
sed 1,5d passwd# 删除 1 3 5 行
sed 1d;3d;5d passwd# 删除奇数行
sed 1~2d passwd# 删除偶数数行
sed 2~2d passwd
## 在某个内容 追加
i 是在上边插入 a 是在 后边追加sed /\[mysqld\]/a\innodb_buffer-pol_size 128 M /etc/my.cnf
\[mysqld\] 在[mysqld] 内容后追加
/a 是在下边追加# 在某行下边添加sed 8a hahaha passwd# 在某行上边添加
sed 10i lalala passwd# 删除 注释和空行
sed -r /#/d ; /^$/d {文件路径}# 把10行以后的末尾加上cloud:
sed 10,$ s/$/cloud/ passwd## 10,$ 表示 10行到最后## s/$/cloud/ 表示把行尾替换为 cloud# 显示包含oo字符串的行到包含gin字符串的行:
sed -n /oo/,/gin/p passwd# 在文件第一行添加 11111 1s表示对第一行 进行操作。
sed 1s/^/11111\n/ passwd# 删除10到20行最后一个字符:
sed -i 10,20s/.$// passwd# 打印第10 行到结尾
sed -i 10,$p passwd