[英]sed with special characters
我有這條線,我想在 sed 上使用:
--> ASD = $start ( *.cpp ) <--
其中 $start 不是變量,我想在其上使用 sed 並將所有此行替換為:
ASD = $dsadad ( .cpp )
我怎樣才能讓 sed 忽略特殊字符,我嘗試在特殊字符前添加反斜杠,但也許我弄錯了,有人可以給我舉個例子嗎?
這是我想要的:
sed 's/CPPS = \$(shell ls | grep \*\.cpp )/somereplace/' Makefile
sed 's/\$start/\$dsadad/g' your_file
>> ASD = $dsadad ( *.cpp )
sed 's/\*//g' your_file
>> ASD = $start ( .cpp )
要關注你的編輯:
sed -i 's/ASD = \$start ( \*.cpp )/ASD = \$dsadad ( .cpp )/' somefile
>> ASD = $dsadad ( .cpp )
添加-i(--inplace)以編輯輸入文件。
反斜杠工作正常。 echo '*.cpp' | sed 's/\\*//'
echo '*.cpp' | sed 's/\\*//'
=> .cpp
如果你在shell中,你可能需要雙重轉義$
,因為它是shell(變量擴展)和sed(行尾)的特殊字符
echo '$.cpp' | sed "s/\\\\$//"
echo '$.cpp' | sed "s/\\\\$//"
或echo '$.cpp' | sed 's/\\$//'
echo '$.cpp' | sed 's/\\$//'
//'=>'。cpp'
不要逃避(
或)
; 這實際上會使他們成為sed中的特殊(組)。 其他一些常見字符包括[
]
\\
.
?
這是如何逃避你的例子:
sed 's/ASD = \$start ( \*\.cpp )/ASD = $dsadad ( .cpp )/' somefile
chacters $
, *
, .
對於正則表達式是特殊的,因此需要將它們轉義為字面意思。
sed 's/ASD = \$start ( \*\.cpp )/ASD = \$dsadad ( .cpp )/' somefile
我有一個用例,我必須用一個變量替換文本,該變量包含一個特殊符號,例如 (xyz-compute@developer.gserviceaccount.com)。 這個@
符號造成了一個問題。 所以我發現這個解決方案很有用。
SERVICE_ACCOUNT="xyz-compute@developer.gserviceaccount.com"
sed -i 's/DEVOPS_SERVICE_ACCOUNT/'${SERVICE_ACCOUNT}'/g' file.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.