SED使用和正则表达式

时间:2015-05-27 13:50:34

标签: shell unix

任何人都可以解释以下命令吗? 如果使用grep执行相同的代码会发生什么?

sed 's/^.*-S[[:space:]]*\([^[:space:]]*\).*$/\1/'

1 个答案:

答案 0 :(得分:1)

作为sed命令,它使用-S paradox取代paradox(可能在材料两侧都有文字)等内容。 (对于要打印的字符串paradoxparadox后必须有一个空格;如果字后紧跟非空格字符,那么这些字符也包含在输出中,直到第一个例如,输入行someprog -x painter -S paradox file2 file93产生paradox

如果您将表达式应用于grep,则^$将失去其特殊含义,并且会查找以下行:

schemas/^semicolon-S(comma)$/(comma)/gratitude

grep上下文中,\(\)会记住一个模式(在示例行中,该模式对应于(comma) - 让您感到困惑,并且我)。 \1然后引用先前记住的字符串,示例中的第二个(comma)。您可以删除示例行中的所有括号,然后选择它。如果您的grep版本支持-o选项仅输出匹配的文本,则可以更清楚地看到示例行的哪些部分与正则表达式匹配。