Linux基础命令通配符 正则 扩展正则
什么是通配符
他是shell的内置功能,通配符,用过DOS的应该很了解,也很常用。
通配符,指包含这些字符的字符串 "?","*","[","{}"。
|==管道符,或者(正则);>==输出重定向;>>==输出追加重定向;
<==输入重定向;<<==输入最佳重定向;~==当前用户家目录;
` ` $( ) ==引用命令被执行后的结果;$==以。。结尾(正则)
;^==以。。开头(正则);*==匹配全部字符,通配符;
?==任意一个字符,通配符;#==注释;
&==让程序或脚本切换到后台执行;&&==并且 同时成立;
[ ]==表示一个范围(正则、通配符);{ }==产生一个序列(通配符);
.==当前目录的硬链接;..==上级目录的硬链接;
*==匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个)ls file *;
?=匹配任任何一个字符(不在括号内时)?代表任意一个字符ls file 0;
[abcd]==匹配abcd中任何一个字符,不能创建;
[a-z]==表示范围a到z,表示范围的意思[ ]匹配中括号中任意一个字符 ls file 0;
{..}==表示生成序列,以逗号分隔,且不能有空格;
补充
[!abcd]==或[^abcd]表示非,表示不匹配括号里面的任何一个字符;
[ ] 和 { }区别=[ ]只能用来找文件,{ }用来找文件,或创造文件,生成序列;
cp 文件名{,.bak}== 备份文件 ","代表文件名
什么是正则表达式
1.正则表达式就是为了处理大量的文本 |字符串而定义的规则和方法
2.通过定义的特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串,Linux正则表达式一般以行为单位处理。
简单理解为:
1.为了处理大量文本|字符串而定义的一套规则和方法。
2.以行为单位出来,一次处理一行。
grep、sed、awk都支持正则表达式 看大文件使用,处理方式(一次读取一行内容)
grep:grep "xxx" yunjisuan =包含xxx的行都会显示出来除了xxx其他都属于模糊搜索
1 welcome
2 welcomexxx
3 yyywelcome
4
5
6 xxx
7 yyy
8 xxx|welcome|yyy
9 WELCOME
grep -n "xxx" yunjisuan = -n==加行号
grep -ni "xxx" yunjisuan = -i == 不区分大小写
grep -niv "xxx" yunjisuan = -v ==取反
grep -nio "xxx" yunjisuan = -o ==只输出匹配的内容
grep -niw "xxx" yunjisuan = -w ==精确匹配内容
grep -l "xxx" yunjisuan = -l ==显示匹配内容的文件名
grep=支持基础正则;egrep=支持扩展正则;
只有grep、sed、awk是由正则表达式,其他都是通配符。
正则表达式:
^==以什么开头;$==以什么结尾;
.==带表且只能代表任意一个字符(不匹配空行)
grep ".*" yunjisuan = ".*"==表示任意字符和文本。
grep " ^[^abc]" yunjisuan 第一个^=以是什么开头,第二个^是取反。
\ ==转义符(取消原有的作用)
扩展正则表达式:
+=重复前一个字符一次活一次以上。
?=重复前面一个字符0次或1次(.是有且只有1个)
|=表示或者同时过滤多个字符
正则符:^; $; .; *; .*; [ ]; [^ ];
扩展正则:+; |; ?; ( ); { }; a(n,m); a{n,}; a{n};