下面的命令sed和正則表達式簡單:奇怪的桑達輸出
echo 'Atest Atest Atest' | sed -E 's/A|$/B/g'
產生輸出:
Btest Btest B
可能有人解釋,請,爲什麼吃sed的最後一個字?我預計輸出是這樣的:
Btest Btest BtestB
我使用與Mac OS捆綁在一起的sed版本(「BSD-flavor」)。
更新 與GNU sed相比,此行爲看起來像一個錯誤,所以我選擇了堅持後者。
下面的命令sed和正則表達式簡單:奇怪的桑達輸出
echo 'Atest Atest Atest' | sed -E 's/A|$/B/g'
產生輸出:
Btest Btest B
可能有人解釋,請,爲什麼吃sed的最後一個字?我預計輸出是這樣的:
Btest Btest BtestB
我使用與Mac OS捆綁在一起的sed版本(「BSD-flavor」)。
更新 與GNU sed相比,此行爲看起來像一個錯誤,所以我選擇了堅持後者。
有趣的是,這似乎是在OSX上可用的BSD sed中的一些錯誤(奇怪的行爲)。我可以重現這種行爲。看起來這種行爲只發生在g
標誌。
爲了解決這個問題,我建議使用這種等價sed
命令:
echo 'Atest Atest Atest' | sed 's/A/B/g;s/$/B/'
Btest Btest BtestB
工作細到我的'sed的(GNU SED)4.2.2'。 – fedorqui 2014-10-31 14:23:51
我的sed(4.2.2)返回你的期望。它在Windows下的cygwin下的zsh – 2014-10-31 14:24:12
適用於我。 sed 4.2.1也能像你期望的那樣工作。 – flob 2014-10-31 14:27:13