[英]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.