我想用sed替換某些字符,但前提是必須滿足某些條件。使用sed替換字符
所以,如果字符串中某處出現\t
,應該用\
替換,即。帶有反斜槓和物理選項卡。 如果出現\\t
,則不應執行任何操作。
一個邏輯將代替每個\t
這是不是前面\
但我不知道如何編寫該正則表達式。不是很擅長這個東西,也不是很好。
我想用sed替換某些字符,但前提是必須滿足某些條件。使用sed替換字符
所以,如果字符串中某處出現\t
,應該用\
替換,即。帶有反斜槓和物理選項卡。 如果出現\\t
,則不應執行任何操作。
一個邏輯將代替每個\t
這是不是前面\
但我不知道如何編寫該正則表達式。不是很擅長這個東西,也不是很好。
嘗試:
sed -r 's/^\\t|([^\\])\\t/\1\t/g' file
例子:
$ cat file
hello\tworld
foo\\tbar
\tfirst
last\t
last\\t
\\tfirst
$ sed -r 's/^\\t|([^\\])\\t/\1\t/g' file
hello world
foo\\tbar
first
last
last\\t
\\tfirst
感謝您從其他答案複製98%:)但事實上,這個答案不適用於Mac 10.6.8 – anubhava 2013-03-19 15:39:36