我想要做以下替換在文本文件中UNIX命令:關於「sed的」
原始字符串:"---a---"
置換後:"---\a---"
,我運行以下命令:
sed -r -e "s/-(a)-/-\\\1-/g" test.txt
但它沒有給出正確的結果。我應該使用什麼命令參數?
我想要做以下替換在文本文件中UNIX命令:關於「sed的」
原始字符串:"---a---"
置換後:"---\a---"
,我運行以下命令:
sed -r -e "s/-(a)-/-\\\1-/g" test.txt
但它沒有給出正確的結果。我應該使用什麼命令參數?
請記住,反斜槓在Bash的雙引號字符串以及sed本身中都很重要。無論是使用單引號:
sed -r -e 's/-(a)-/-\\\1-/g' test.txt
再或者逃避反斜槓:
sed -r -e "s/-(a)-/-\\\\\\1-/g" test.txt
如果您呼應琴絃,你會看到發生了什麼:
$ echo "s/-(a)-/-\\\1-/g"
s/-(a)-/-\\1-/g
$ echo 's/-(a)-/-\\\1-/g'
s/-(a)-/-\\\1-/g
$ echo "s/-(a)-/-\\\\\\1-/g"
s/-(a)-/-\\\1-/g
第一個(原始)只是看起來像一個文字反斜槓後面是一個文字1到sed。
嘗試sed -r -e "s/-(a)-/-\\\\\\1-/g"
或sed -r -e 's/-(a)-/-\\\1-/g'
的問題是,\
是bash的,如果你使用雙引號抓獲。
你有一個
sed -r -e "s/-(a)-/-\\\a-/g" test.txt
隨着"
更換1次,你將不得不做這樣的事情:
[jaypal:~/Temp] echo "---a---" | sed -r "s/-(a)-/-\\\\\1-/g"
---\a---
這麼多的答案......
Kaizen ~/so_test
$ echo "---a---" | sed -n 's/a/\\a/p'
---\a---
既然你有一個文本文件,下面應該工作:
sed -i 's/a/\\a/g' filename.txt ;
對此有幫助嗎?
感謝您的回答。我錯誤地刪除了一個答案。對不起。 – jun