任何人都可以解释以下命令吗? 如果使用grep执行相同的代码会发生什么?
sed 's/^.*-S[[:space:]]*\([^[:space:]]*\).*$/\1/'
答案 0 :(得分:1)
作为sed
命令,它使用-S paradox
取代paradox
(可能在材料两侧都有文字)等内容。 (对于要打印的字符串paradox
,paradox
后必须有一个空格;如果字后紧跟非空格字符,那么这些字符也包含在输出中,直到第一个例如,输入行someprog -x painter -S paradox file2 file93
产生paradox
。
如果您将表达式应用于grep
,则^
和$
将失去其特殊含义,并且会查找以下行:
schemas/^semicolon-S(comma)$/(comma)/gratitude
在grep
上下文中,\(
和\)
会记住一个模式(在示例行中,该模式对应于(comma)
- 让您感到困惑,并且我)。 \1
然后引用先前记住的字符串,示例中的第二个(comma)
。您可以删除示例行中的所有括号,然后选择它。如果您的grep
版本支持-o
选项仅输出匹配的文本,则可以更清楚地看到示例行的哪些部分与正则表达式匹配。