【问题标题】:Can you explain what this regex does in ksh?你能解释一下这个正则表达式在 ksh 中的作用吗?
【发布时间】:2017-03-03 17:04:37
【问题描述】:
grep -i "^--[ ]*dependency" "$dir/${script[${array_len}]}"|grep -v -i ":[     ]*none[         ]*$"

【问题讨论】:

  • 知道[ ]*none[ ] 到底是什么会很有趣。它们可能包含一个制表符和一个空格。
  • 是的,第一个方括号是空格,最后两个是制表符。

标签: regex unix grep ksh


【解决方案1】:

这包含两个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 开头且不以 : + tabs + none + tabs 结尾的行。


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

  • -i 忽略 PATTERN 和输入文件中的大小写区别。
  • -v 反转匹配感,选择不匹配的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多