我試圖使用 sed的(1)取的std::memset
和std::memcpy
所有出現的::memset
和::memcpy
前綴。我嘗試了以下模式,但它不起作用 - 我只是得到相同的文本。刪除使用sed和正則表達式
$ sed 's/std\(::\(memset|memcpy\)\)/${\1}/g'
基本上我想如果後面::memset
或::memcpy
擺脫性病。
我試圖使用 sed的(1)取的std::memset
和std::memcpy
所有出現的::memset
和::memcpy
前綴。我嘗試了以下模式,但它不起作用 - 我只是得到相同的文本。刪除使用sed和正則表達式
$ sed 's/std\(::\(memset|memcpy\)\)/${\1}/g'
基本上我想如果後面::memset
或::memcpy
擺脫性病。
通過爲GNU sed提供命令行選項-r
或爲Mac OS等BSD系統提供-E
,可在腳本中使用擴展正則表達式。
linux$ sed -r 's/std(::(memset|memcpy))/\1/g' code.cpp
macos$ sed -E 's/std(::(memset|memcpy))/\1/g' code.cpp
OS X的sed
是一隻好奇的野獸!
這工作:
bash-3.2$ echo '
std::memset()
std::memcpy()
' | sed -E 's/std(::(memset|memcpy))/\1/g'
::memset()
::memcpy()
(測試達爾文內核版本11.3.0:星期四一月12 18點47分41秒PST 2012;根:XNU-1699.24.23〜1/RELEASE_X86_64)
第一個不起作用,我的'sed'(OS X)沒有-r ...我也在尋找一個便攜式解決方案。 – 2012-03-10 02:31:52
請嘗試'sed's/std \(:: memset \ | :: memcpy \)/ \ 1/g'' – kev 2012-03-10 02:35:18
也不起作用。 – 2012-03-10 02:36:36