我嘗試下面的命令上終端
echo "aa" | sed -r 's/o*/_/g'
結果是這樣
_a_a_
什麼我預計是
__
當第一a
被讀取,這意味着有零o
使a
將由_
SED -r(例如回聲 「AA」 | SED -r 'S/O */_/G')
被替換如果我使用
echo "aoooa" | sed -r 's/o+/_/g'
結果是我所期待的 a_a
但是當我使用
echo "aoooa" | sed -r /s/o*/_/g
結果是 _a_a_
我覺得應該是_a_a
並沒有最後_
我完全不知道爲什麼有3個下劃線。有誰能告訴我這個特定案例的運行過程嗎?
請編輯你Q顯示你**做**期望的輸出。並且回想一下'*'意味着零或更多的前面的文本對象,強調零或多個。當然,你爲什麼期望's/o/g'改變'a'(或者'l',就像你在主題中的那樣)?祝你好運。 – shellter
當它讀取第一個'a'時,我認爲滿足條件'o *'是因爲沒有'o'並且'a'將被替換爲'_' –
如果您試圖用'_'替換'a' ''sed's/a/_/g''應該足夠了。 如果你想替換任何字母(a-z),那麼你可以使用's/[a-z]/_/g'' – derp