我在使用執行替換模式中的命令的sed替換選項時遇到問題。我相信這個選項是對GNU sed的擴展,但是我一直沒能找到任何文檔。任何人都知道嗎?使用帶e替換選項的sed:s /// e
我的問題是,當使用執行替換選項時,我無法正確提取匹配的文本。我使用GNU在Mac OSX 10.7.4
echo "12345678\r" | sed 's/.*/echo "&);"/e'
Result:);345678
Desired Result: 12345678);
我使用不同的正則表達式匹配,如\ d +試過sed的4.2,但只是似乎打破使用/ E選項替代的能力。我已經嘗試使用明確的捕獲組,例如\ 1而不是&,但這似乎也打破了/ e選項。
更新:
我的例子也許是過於簡單化了什麼,我最終想要做的是採取與各行持有的唯一值的文本文件,並傳遞給sed和使用的uuidgen命令(在與我發佈的previous question相同)。我得到的新問題是因爲我現在在Mac上運行命令\ r沒有從匹配的字符串中剝離。
完整的命令我想執行的是:
sed 's/.*/echo "blah blah `uuidgen`,&):"/e' file.txt
更新2:
在我的Mac端我不需要使用echo -e得到\ r解釋爲換行,實際上根據「man echo」沒有-e選項。它使所有的終端環境:(之間過不去移動
感謝千電子伏,我能夠拿出在Mac工作的解決方案
sed 's/\r//; s/.*/ echo "blah blah (`uuidgen`,&);"/e' file.txt
哪個平臺? –
Mac OSX上的GNU sed 4.2 10.7.4 – sipwiz
'e'選項記錄在[GNU'sed'手冊](http://www.gnu.org/software/sed/manual/sed.html#The- _0022s_0022-命令)。 –