如何将/
视为单词和grep完全匹配的一部分?
$ echo "aa/bb/cc dd/ee/ff" | grep -w aa/bb
aa/bb/cc dd/ee/ff
$
我希望grep将整个字符串与/
完全匹配。
在上面的示例中,我不希望它与aa/bb/cc
字符串匹配,但只有在有aa/bb
预期产出:
$ echo "aa/bb/cc dd/ee/ff" | grep <options??> aa/bb
$ <empty>
$ echo "aa/bb dd/ee/ff" | grep <options??> aa/bb
aa/bb dd/ee/ff
$ echo "kk/ll aa/bb dd/ee/ff" | grep <options??> aa/bb
kk/ll aa/bb dd/ee/ff
$ echo "kk/ll dd/ee/ff aa/bb" | grep <options??> aa/bb
kk/ll dd/ee/ff aa/bb
$ echo "kk/ll dd/ee/ff aa/bb/cc" | grep <options??> aa/bb
$ <empty>
$ echo "kk/ll dd/ee/ff a-aa/bb" | grep <options??> aa/bb
$ <empty>
答案 0 :(得分:1)
grep
方法:
echo "aa/bb/cc aa/bb dd/ee/ff" | grep -P '(?:^|\s)aa/bb(?=\s|$)'
aa/bb/cc aa/bb dd/ee/ff
echo "aa/bb/cc aa/bb dd/ee/ff" | grep -P '(?:^|\s)aa/bb(?=\s|$)'
<empty>
-P
- perl regex (?:^|\s)aa/bb(?=\s|$)
:
(?:^|\s)
- 具有替换组的未捕获组,以匹配字符串^
的开头或空白字符\s
aa/bb
- 字面匹配aa/bb
序列(?=\s|$)
- 包含替换组的前瞻性肯定断言,以匹配空白字符\s
或字符串$
的结尾答案 1 :(得分:1)
将grep与-P
perl正则表达式开关一起使用:
$ grep -P '(?<=\w)aa/bb(?![/\w])'
我使用look around高级正则表达式技术。即使链接是用于perl,它也是一个很好的资源(它不仅仅适用于perl)