我試圖用myfile替換s#_coded_block_#
中的所有模式 s#_coded_block[#]
。我在網上看了關於如何更換與分組圖案和我的命令是:使用sed替換模式
sed -i -E 's/s\([0-9]*\)_coded_block\[\([0-9]*\)\]/s\1_coded_block_\2/g' myfile
不過,我對'S'
命令的RHS當越來越
無效引用\ 2我執行這個命令。
我試圖用myfile替換s#_coded_block_#
中的所有模式 s#_coded_block[#]
。我在網上看了關於如何更換與分組圖案和我的命令是:使用sed替換模式
sed -i -E 's/s\([0-9]*\)_coded_block\[\([0-9]*\)\]/s\1_coded_block_\2/g' myfile
不過,我對'S'
命令的RHS當越來越
無效引用\ 2我執行這個命令。
隨着-E
選項,你不要在捕獲括號之前需要反斜槓:
sed -i -E 's/s([0-9]*)_coded_block\[([0-9]*)\]/s\1_coded_block_\2/g' myfile
您可能需要一個或更多的數字,在這種情況下,你使用+
而不是*
。如果您決定刪除-E
,你原來的代碼應工作,但如果你想至少一個數字,你需要寫\{1,\}
:
sed -i 's/s\([0-9]\{1,\}\)_coded_block\[\([0-9]\{1,\}\)\]/s\1_coded_block_\2/g' myfile
所示-i
符號只與GNU sed
可靠地工作。 BSD(macOS或Mac OS X)sed
會將第一個命令行中的-E
作爲後綴(在第二個中,您會收到關於m
不是有效的sed
命令的投訴,因爲該腳本將被視爲後綴,並且如果您想要便攜式代碼,請使用-i.bak
,這會創建一個包含兩種變體的備份文件 - 必須附加.bak
(可能需要附加)。到-i
GNU sed
。
非常感謝你,它的工作原理! – slin6174
你會提供你想要替換的樣本數據嗎? –
刪除-E並嘗試 –