在Linux正则表达式中灵活地搜索文件中的文本
1。grep匹配模式
grep接受下列方式的选项和参数(即正则表达式是一个正则表达式)
复制代码代码如下所示:
{选项} {文件grep正则表达式}
选项主要是下表:
选项
意义
功能描述
-我
忽视案例
忽视案例
v
反向匹配
不匹配的匹配
l
文件匹配
输出匹配的文件名
l
文件不匹配
输出不匹配的文件名
C
计数
输出匹配的数量(行)
n
数
当输出匹配时,文件名和文件名中的行数被添加到前面。
H
没有文件名
禁止文件名的输出
作为一个Linux系统管理员,你需要处理的文本文件,你可以使用不同的工具,如grep,awk,sed,找到包含特定文本字符串的文件。在这里,我将介绍一个灵活的方式来搜索文件中的文本使用正则表达式的方法。
让我们考虑一个正则表达式的函数的一个例子。例如,当您尝试使用命令grep -R的主机,结果将是巨大的。因为每一个字,包含主机的文本字符串(如一个字如Ghostscript)将匹配的正则表达式,你可以更好地定制你的寻找。例如,你可以使用正则表达式的^ host'to告诉grep只是为了找到行开始与主机。
正则表达式中所有的命令都是不可用的,你可以使用的命令必须预先编程,正则表达式可以使用。使用这些命令最常用命令grep,TR,和其他工具,如sed和awk,也可以使用正则表达式。
使用正则表达式的一个例子是:
复制代码代码如下所示:
grep'lin.x *
在常规expression'lin.x'have点特殊的意义。它匹配任何字符,在这个位置上。防止解释的问题,我建议你总是把正则表达式之间的单引号,防止shell解释正则表达式。
使用正则表达式
使用正则表达式可以做很多事情。在下面的列表中,您可以找到一些最常用和最常用的正则表达式的示例。
* ^:显示文本字符串必须在一行的开始。所以,当开始查找行只之行,你可以使用命令:grep -ls^主持人
* $:它代表一行的结束。所以,当查找行结束仅仅是主机的线,你可以使用命令:grep - ls'hosts $
*您可以将正则表达式中的+和$组合起来,以找到仅包含Yes的行。
*:通配符,可以参考其他比一行一行的任意字符。为了找到一行包含TEX,礼服,弓形虫,或票,你可以使用:grep -ls 't.x
* { }:说明正则表达式的括号之间的字符是可选的。为了找到一个用户名为Pinda或琳达,你可以使用命令:grep -ls{ }来的PL
* { ^ }:忽略所有字符^后括号。为了找到包含文本的琳达线,而忽略了只包含琳达和品达的线,命令:grep - '' { }来的^ PL
*:表示一个类或一个范围内的字符。这是命令,如TR下面的命令可以把所有小写字母转换成大写字母很有用:tr a-z A-Z <下myText.以同样的方式,你可以使用正则表达式执行'' ^ 0-9'to找到文件和一些线开始一个数。
*:找到一个单词的开始或结束的方式,查找行开始被称为圣的命令:grep。这些正则表达式有两个缺点:他们不看行开始与指定的正则表达式,并不是所有的工具支持。然而,vi和grep支持这种用法。
*:确保一个字符,在正则表达式的特殊意义不解释。找到的任何字符和命令的文本字符串,跟着文字东道主是执行ls的开始。主持人。如果你需要找到的第一个字符,然后东道主的文本字符串
这些正则表达式可以帮助你找到包含特定文本字符串的话,你也可以使用正则表达式来指定在一个字的字符串的频率。例如,你可以使用正则表达式搜索只包含用户名琳达三次文件。要做到这一点,你需要使用重复算子的正则表达式和确保整个正则表达式在引号。没有报价,你可能引起外壳来解释你的重复操作。
最重要的重复操作符的列表如下:
**:它表明前面的正则表达式可能出现一次、多次、或根本没有出现。注意:不要与shell中的*混淆,*表示任意字符,在正则表达式中,可能存在*表达式之前的正则表达式。
×:表示该位置可以是一个字符(但不是必须)。例如,命令同时发现颜色和颜色是:执行ls'colo.r
+:它表示前一个字符或正则表达式至少应该出现一次。
* { N }:表示前一个字符或正则表达式应该至少N倍。当你看到一个100和999之间的数字,它是非常有用的:grep -ls '0-9 { 3 }
我们已经提出了正则表达式的使用你。这可以让你更有效时,你是一个管理员。正则表达式可以提供更多的功能,包括一些比较复杂的操作。但在此之前,请先掌握技能,我们已经介绍了正则表达式可以很复杂,你可以很容易迷路。