2015-05-27 78 views
1

任何人都可以解釋下面的命令嗎? 如果使用grep執行相同的代碼會發生什麼?SED的使用和正則表達式

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

'grep'不做任何替換。 – anubhava

+1

如果這裏的問題是什麼模式匹配,然後使用像https://regex101.com/或http://regexr.com/這樣的網站可能會有所幫助,以及http://www.regular -expressions.info/用於學習所有關於正則表達式的知識。 –

回答

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選項僅輸出匹配的文本,則可以更清楚地看到採樣行的哪些部分與正則表達式匹配。