正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法
grep、sed、awk天然支持正则
grep -v代表反选,反向选择匹配到的内容
grep -E代表使用扩展正则
grep -P代表使用Perl正则
sed -r 代表使用扩展正则
正则表达式分为三类(man grep可以看到,分别是basic RegExs,extended RegExs,perl RegExs)
1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)
2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)
3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)
b. 处理过程:查找文本文件中是否包含要查找的 “关键字”(关键字可以是正则表达式) ,默认返回匹配的该行的内容
c. grep|egrep处理文件时,按行处理 |
| sed | sed | sed -r | - | a. 处理对象:文本文件
b.处理 *** 作:对文本文件的内容进行 查找、替换、删除、增加等 *** 作
c. sed 在处理文本文件的时候,按行处理 |
| awk | - | awk | - | a. awk 处理的对象:文本文件
b. awk 处理 *** 作:主要是对列进行 *** 作 |
注意:egrep 或 sed -r 默认使用扩展正则表达式(EREs),一般特殊字符({})可以不转义
grep -E 以及egrep(Extend Regular Expression)
Linux通配符和三剑客的正则表达式是不一样的,因此,代表的意义也有较大的区别 。
通配符一般用户命令行bash环境,而linux正则表达式用于grep, sed, awk场景。
通配符说明
示例:* 的使用:代表任意0-N个字符,代表所有字符
1、直接使用通配符。
ls la*
这是最方便的一种方法,*表示匹配任何长度的任意字符,通过这样的方式就可以查找到所有以ls开头的文件,如果我们想查找文件名中含有la的文件,只需输入“ls *la*”即可。
2、可以使用管道,将ls输出送入grep这个程序来实现。
ls -1 | grep "^la"
-1选项表示将列出的所有文件排成一列,方便grep的匹配(grep按行匹配)。
扩展资料:
ls 指令是Linux下最常用的指令之一。
ls 命令将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息。
运用举例:
1、列出具体文件 #ls -al //这个最常用,可是往往又不彻底符合要求,
2、列出一切子目录的文件:#ls -R //上个指令仅仅列出了本目录下的一切目录和文件,可是目录下的文件不会循环的列出。
3、分屏显现:#ls -l|more //能在当时屏退出,很有用,但不能一页一页翻屏
#ls -l|less //能用pgup,pgdw 翻页,但不能在当时方位退出。
参考资料来源:百度百科-LS (LINUX中ls命令)
管道命令符 " | " 的作用是将前一个命令的标准输出当作后一个命令的标准输入,格式为"命令A|命令B"。
例如:
搜索rsyslogd进程: $ ps -ef | grep rsyslogd
用反野形式查看/etc 目录中有哪些文件: $ ls -l /etc/ | more
bash解释器支持多种文本通配符,包括:
我们之前在学文本查询搜索命令时就用到了通配符,例如,在 /etc 目录下搜索所有的以host开头的文件:
$ find /etc -name "host*"
另外,bash解释器还支持很多的特殊字符扩展:
例如:
先定义名称为PRICE的变量值为5
$ PRICE=5
输出“价格是5”:
输出“价格是$5”,但因为美元符号与代表变量取值的$符号冲突,所以需要用到转义字符:
使用单引号,变量将不再被取值:
执行 uname -a 后可以查看到本机内核的版本与架构信息(反引号里面的命令会被执行):
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)