三剑客
sh -x 显示脚本执行过程
set命令设置开始debug和结束debug的位置 显示脚本执行过程,解决复杂脚本故障
正则(RE)表达式
应用场景
- 匹配有规律的:手机、身份证号、日志
规则
注意事项
- 所有的符号都是英文符号
- 通过grep 需加上引号
- 给grep、egrep加上颜色
alias grep='grep --color=auto' alias egrep='egrep --color=auto'
- 注意系统的字符集:en_US.UTF-8,如果出现问题修改字符集为C export LANG=C
- 快速掌握正则:配合grep -o参数学习
正则符号
分类 | 符号 | 命令 |
---|---|---|
基础正则BRE(basic RE) | ^ $ ^$ . \* .* [a-z] [^abc] |
grep/sed/awk |
扩展正则ERE(Extended RE) | + | () {} ? |
egrep(grep -E)/sed -r/awk |
基础正则
^
:以…开头
grep '^My' oldboy.txt
$
:以…结尾
grep '^My' oldboy.txt
cat -A file
展示所有,末尾会显示$符号
^$
:空行,这一行中没有任何内容(包括空格)
grep -n '^$' oldboy.txt
排除文件中的空行:grep -nv '^$' oldboy.txt
.
:任意一个字符
grep '.' oldboy.txt
注意:.
不会匹配空行
\
:转义字符(脱掉马甲打回原形,去除原有特殊含义)
匹配以
.
结尾的行
grep '\.$' oldboy.txt
- 转义字符序列
\n
:回车换行\t
:tab键
*
:前一个字符连续出现0次或0次以上
grep '0*' oldboy.txt
.*
:所有内容
grep '.*' oldboy.txt
注意:.*
可以匹配出空行
匹配开始到is结束的内容:grep '^.*is' oldboy.txt
- 正则表达式的贪婪性:
.*
表示所有或*
连续出现的时候,表现出尽可能贪婪匹配
2*
:数字2出现了0次
或0次以上
,如果2出现了0次
,就相当于是没有匹配空字符
[]
:[abc]
----1次匹配1个字符,匹配任何一个字符(a或b或c),一般与+
号搭配
grep '[abc]' oldboy.txt
grep -o '[abc]' oldboy.txt
:显示匹配过程
- 精简写法:[a-z]、[A-Z]、[0-9]:
grep '[a-z]' oldboy.txt
- 不区分大小写写法1:
grep '[a-zA-Z0-9]' oldboy.txt
- 不区分大小写写法2:
grep -i '[a-z0-9]' oldboy.txt
,-i
表示不区分大小写