锚
插入符号 (^) 和美元符号 ($) 字符被视为 锚 在正则表达式中。 这意味着只有在行首找到正则表达式时,它们才会导致匹配发生 (^) 或行尾 ($):
[我@linuxbox ~]$ grep -h '^zip' 目录列表*.txt
zip zipcloak zipgrep zipinfo zipnote zipsplit
[我@linuxbox ~]$ grep -h 'zip$' 目录列表*.txt
gunzip gzip funzip gpg-zip preunzip prezip 解压缩 zip
[我@linuxbox ~]$ grep -h '^zip$' 目录列表*.txt
拉链
[我@linuxbox ~]$ grep -h '^zip' 目录列表*.txt
zip zipcloak zipgrep zipinfo zipnote zipsplit
[我@linuxbox ~]$ grep -h 'zip$' 目录列表*.txt
gunzip gzip funzip gpg-zip preunzip prezip 解压缩 zip
[我@linuxbox ~]$ grep -h '^zip$' 目录列表*.txt
拉链
在这里,我们在文件列表中搜索位于行首、行尾和行首和行尾的字符串“zip”(即,单独位于线)。 请注意,正则表达式 '^$'(开头和结尾之间没有任何内容)将匹配空行。
填字游戏助手
即使在这一点上我们对正则表达式的了解有限,我们也可以做一些有用的事情。
我的妻子喜欢填字游戏,她有时会就某个特定问题向我寻求帮助。 比如,“什么是一个五个字母的单词,它的第三个字母是'j',最后一个字母是'r',这意味着......?” 这样的问题引起了我的思考。
您知道您的 Linux 系统包含字典吗? 确实如此。 看看在 /usr/共享/字典 目录,您可能会找到一个或多个。 位于那里的字典文件只是一长串单词,每行一个,按字母顺序排列。 在我的系统上, 话 文件包含刚刚超过 98,500
字。 要找到上述填字游戏问题的可能答案,我们可以这样做:
[我@linuxbox ~]$ grep -i '^..jr$' /usr/share/dict/words
主要专业
使用这个正则表达式,我们可以在字典文件中找到所有五个字母长且第三个位置有“j”,最后一个位置有“r”的单词。