2013-05-04 56 views
1

我用SED練一些命令時,我用以下命令的輸出困惑:匹配零個或多個字符在sed

echo 'first:second' | sed 's_[^:]*_(&)_g' 

我的問題是:爲什麼這個命令只包住字符串「第一「和」第二「括號?

由於我在我的正則表達式中指定了「或更多非冒號」,不應該將冒號也包裹起來嗎?

請說明。

+3

冒號本身既不是「零不冒號」(因爲它是一個長度爲1的字符串)也不是「更多非冒號」(因爲它是冒號),所以顯然模式不匹配。 – chris 2013-05-04 06:49:42

+0

你會期待什麼結果呢?這聽起來像你期待'(第一)(:)(第二)',但顯然不會發生。或者你的意思是(第一)():(第二)()'? – 2013-05-04 06:49:43

+0

嗨克里斯。感謝您的啓發。我明白了代碼的意義! – LanceHAOH 2013-05-05 06:46:47

回答

2

您使用

[^:] 

其搜索除了:所有字符。 所以你遇到的是正常的配合。