問題:我有一個帶字符的變量我想在存儲在一個變量中的同一個字符串中添加另一個字符在sed中查找和替換變量中的特定字符
Ex。 「[blahblahblah]」 ---> 「\ [blahblahblah \]」
目前的解決方案:目前,我完成我想有兩個步驟,每一步攻擊一個支架
例。
temp=[blahblahblah]
firstEscaped=$(echo $temp | sed s#'\['#'\\['#g)
fullyEscaped=$(echo $firstEscaped | sed s#'\]'#'\\]'#g)
這給我我想要的結果,但我覺得我可以在一行中使用capturing groups做到這一點。我只是沒有運氣,我正在被燒燬。我遇到的大多數例子都涉及到想要提取括號內的文本,而不是我想要做的。 This是我的最新嘗試無濟於事。有任何想法嗎?
您需要雙擊報價'$ temp'防止分詞和通配符擴展。請注意,'[]'是一個shell通配符,所以它可能會意外擴展。 –
是的,你是對的。這是從OP複製,並將修改此。 – CWLiu
我也只是注意到你正在使用的正則表達式是擴展格式(使用'|'來分隔可選項)。除非使用'sed -r'(GNU sed)或'sed -E'(BSD sed),否則這通常不起作用。它可能會更好使用括號表達式(儘管包含括號的括號表達式很棘手)。 'sed's/[] []/\\&g''應該可以工作。 –