string/word 中的 Grep 子串

Grep substrings in string/word

grep 或任何其他 unix 工具有没有办法在字符串中搜索子字符串序列?

澄清一下:

$ grep "substring1.*subrstring2"
substring1_mySubstring2   # OK substrings forming a single string 
substring1 substring2     # WRONG substrings are separated`

你可以告诉 grep 寻找 substring1 + 一些字符 + substring2:

grep -iE 'substring1\w+substring2' file

请注意使用 -i 忽略大小写,使用 -E 扩展正则表达式覆盖范围(不用 -E 也可以用 \w\+ 代替)。

测试

$ cat a
substring1_mySubstring2
substring1 substring2
substring1_and_other_things12345substring2 blabla

让我们看看当中间没有空格时它是如何匹配的:

$ grep -iE 'substring1\w+substring2' a
substring1_mySubstring2
substring1_and_other_things12345substring2 blabla