你能解释一下这个正则表达式在 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 非匹配行。
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 非匹配行。