你能解释一下这个正则表达式在 ksh 中的作用吗?

Can you explain what this regex does in ksh?

grep -i "^--[ ]*dependency" "$dir/${script[${array_len}]}"|grep -v -i ":[     ]*none[         ]*$"

这包含两个 grep 表达式,所以让我们一个接一个地检查:

  • grep -i "^--[ ]*dependency"

这将检查与模式 "^--[ ]*dependency" 匹配的所有行。此模式表示:以 -- 开始 (^) 的行,后跟任意数量的空格(0、1 或多个),然后是不区分大小写的文本 dependency

看到它工作:

$ cat c
--         dependency
--dependency
-dependency
$ grep -i "^--[ ]*dependency" c
--         dependency
--dependency
  • grep -v -i ":[ ]*none[ ]*$"

这会检查所有与模式 ":[ ]*none[ ]*$".

不匹配的行

此模式表示:包含 : 的行后跟任意数量的制表符(0、1 或多个),然后是不区分大小写的文本 none,最后是任意数量的制表符(0、 1 个或多个)结束该行。

总之,这是检查以 -- + 空格 + dependency 开头且不以 : + 制表符 + none + 制表符结尾的行。


脚注。 grep 中使用的标志在这里:

  • -i 忽略 PATTERN 和输入文件中的大小写区别。
  • -v 反转匹配意义,select 非匹配行。