Linux正則表達式-定位元字符

有两个元字符用于指定字符串出如今行首或行末。脱字符(^)是指示開始的单字符正則表達式。美元符号($)是指示行结尾的单字符的正則表達式。这些通常称为"定位符",由于它们将匹配限定在特定位置。比如,能够使用下面表达式打印以First開始的行:
^First
没有^元字符。这个表达式将打印包括First的随意行。

通常。使用VI输入要由troff处理的文本,而且不想让空格出如今行的结尾。假设想找到(并删除)它们,以下的正則表達式能够匹配在结尾处有一个或多个空格的行:
□□*$

Troff请求和宏必须在行的開始处输入。它们是两个字符的字符串。前面带有一个句点。

假设请求或宏有一个參数。那么它通常后面跟有一个空格。用于搜索这种请求的正則表達式是:
^...□

这个表达式匹配"行首有一个句点,随后跟有两个字符的字符串,然后是一个空格的行"。
能够使用两个连续的定位元字符来匹配空行,即:^$

能够使用这样的模式计算文件里的空行数,在grep中使用计数选项-c:

$ grep -'^$' ch04
5

假设想使用sed来删除空行。那么这个正則表達式非常实用。

以下的正則表達式可用于匹配空行,即使当中包括空格:
^□*$

相同。能够使用下面表达式匹配整个行:^.*$

在sed(和grep) 中,仅仅有当"^"和"$"分别出如今正則表達式的開始或结尾时才是特殊的。

因此"^abc"意味着"匹配仅仅处于行的開始处的字母a、b和c" ,而"ab^c" 意味着"匹配处于行的任何位置的a、b、字符^,然后是c"。

这对于"$"相同使用。

在awk中则不同。 "^"和"$"总是特殊的。即使它们可能使编写的正則表達式不匹配不论什么东西。

能够说,在awk中,当想要匹配字符"^"或"$"时,无论它处于正則表達式的什么位置都应该用反斜杠对其进行转义。

參考资料:http://www.linuxawk.com/communication/441.html

原文地址:https://www.cnblogs.com/llguanli/p/7126230.html