淘客网站推广免备案,网站建设业务拓展,哪个大学的网站做的最好看,拉新推广平台目录
什么是正则表达式
概念
正则表达式的结构
正则表达式的组成
元字符 元字符点#xff08;.#xff09;
代表字符.
点值表示点需要转义 \
r..t 代表r到t之间任意两个字符
过滤出小写
过滤出非小写
space空格 [[:space:]]
表示次数
位置锚定 例#xff1a…目录
什么是正则表达式
概念
正则表达式的结构
正则表达式的组成
元字符 元字符点.
代表字符.
点值表示点需要转义 \
r..t 代表r到t之间任意两个字符
过滤出小写
过滤出非小写
space空格 [[:space:]]
表示次数
位置锚定 例
分组 或
扩展
表示邮箱
表示手机号 AWk
格式 选项
表达式
处理动作
例
awk 常见的内置变量
拓展
awk数组计算 默认使用关联数组 什么是正则表达式
概念
正则表达式Regular Expression在代码中常简写为regex、regexp或RE又称规则表达式是一种文本模式包括普通字符例如a 到 z 之间的字母和特殊字符称为“元字符”是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串通常被用来检索、替换那些符合某个模式规则的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。 正则表达式的结构
shell: /bin/bash
正则表达式匹配的是文章中的字符
通配符匹配的是文件名 任意单个字符
元字符不表示本来的含义在正则表达式中有特殊含义的字符 正则表达式的组成
1.代表字符 . 单个任意字符 [ ]单个字符 [a b c] a或b或c
2.表示次数
3.位置锚定 ^ $
4.分组 或 元字符
. 匹配任意单个字符可以是一个是汉字 [ ] 匹配指定范围内的任意单个字符 [af] [^] 匹配指定范围外的任意单个字符 [^af] 元字符点.
代表字符. 点值表示点需要转义 \ r..t 代表r到t之间任意两个字符 过滤出小写 过滤出非小写 space空格 [[:space:]] 表示次数
* 表示0到正无穷
.* 表示任意长度的字符 不包括0次
\? 可有可无 0或1次
\ 一次及以上 一次到正无穷 1 [[:alnum:]] 字母和数字 \{3\} 前面字符出现最少三次 \{N\} \{3,5} 前面字符出现3到5次 \{n,m\} 位置锚定
^ 开头
$ 结尾
^[[:space:]]*$ 空白行
\b 字符串开头
\ 字符串开头
\b 字符串结尾
\ 字符串结尾 例
词首锚定 词尾锚定 分组 或
分组 ( ) 使用括号将需要组合的字符 括起来 或 \| 扩展
grep -E 使用拓展表达式
egrep 默认使用扩展表达式 简便操作 表示邮箱
echo xyc1234qq.com |grep -E [[:alnum:]_][[:alnum:]_]\.[[:alnum:]_]
xyc1234qq.com 表示手机号
echo 13384402293|grep -E \b1[3456789][0-9]{9}\b
13384402293AWk
AWK 是一种与语言文本处理工具 加载一行处理一行
vim 也是文本处理工具 缺点内存不足时打不开文件
vim是将整个文件加载到内存中处理如果内存不够大无法打开处理文件
akw的内置变量和shell环境中的变量会有冲突 必须使用‘ ’单引号
awk 取列 主要功能
格式
awk 选项 ‘表达式 {处理动作}‘ 选项
-F 指定分隔符
-V 指定变量 表达式
awk 的语言的表达式
1.不写没有
2.找到特定行 处理动作
print 打印
prontf 打印
awk ’{print $2} 以空格为分隔符 取第n列 n大于等于0
awk 内置变量
$0全文 $1第一列 $2第二列 例 awk root‘开头的行{print}
[rootlocalhost/lll] # awk /^root/ {print } /etc/passwd
root:x:0:0:root:/root:/bin/bashawk 内置变量 $0全文 $1第一列 $2第二列 查看磁盘大小 打印第五行 awk 常见的内置变量 awk 选项 ‘模式{print }’ FS 指定分隔符 默认空格 与 “-F”作用相同 -v FS:
[rootlocalhost~] # awk -v FS: {print $1FS$3} /etc/passwd
#此处FS 相当于于变量 -v 变量赋值 相当于 指定 为分隔符
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7OFS 输出时的分割符
[rootlocalhost~] # awk -v FS: -v OFS {print $1,$3} /etc/passwd
root0
bin1
daemon2
adm3
lp4
sync5
shutdown6
halt7
mail8
operator11
games12NF 打印每行有多少字段 倒数第二列 $(NF-1) 倒数第一列$NF
[rootlocalhost~] # awk -F: {print NF} /etc/passwd
7
7
7
7
7
7
7[rootlocalhost~] # df |awk {print $(NF-1) } #倒数第二行
已用%
14%
0%
0%
1%
0%
1%
4%
1%
1%
1%
18%
1%
0%[rootlocalhost~] # df |awk {print $(NF) }
挂载点
/
/dev
/dev/shm
/run
/sys/fs/cgroup
/123
/456
/zzz
/mnt
/home
/boot
/run/user/42
/run/user/0NR 显示行号 awk ‘NR2 {print $1} 打印第二行的第一个字段
[rootlocalhost~] # awk {print $1,NR} /etc/passwd #显示第一列的行号
root:x:0:0:root:/root:/bin/bash 1
bin:x:1:1:bin:/bin:/sbin/nologin 2
daemon:x:2:2:daemon:/sbin:/sbin/nologin 3
adm:x:3:4:adm:/var/adm:/sbin/nologin 4
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 5
sync:x:5:0:sync:/sbin:/bin/sync 6
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 7
halt:x:7:0:halt:/sbin:/sbin/halt 8
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 9
operator:x:11:0:operator:/root:/sbin/nologin 10[rootlocalhost~] # awk NR2 {print $1} /etc/passwd
#只取第二行的第一个字段
bin:x:1:1:bin:/bin:/sbin/nologin拓展
打印出几点几分到几点几分的日志
awk /几点几分/,/几点几分/ 日志文件 awk数组计算 默认使用关联数组
关联数组下标为单词
awk 建立数组
[rootlocalhost~] # awk BEGIN {a[1]lisi; a[2]liwu;print a[1],a[2]}
lisi liwuawk BEGIN {a[1]lisi; a[2]liwu;for(i in a) print a[1],a[2]}
lisi liwu
lisi liwu