Regex 使用SED替换文本

Regex 使用SED替换文本,regex,linux,unix,sed,grep,Regex,Linux,Unix,Sed,Grep,我需要替换包含字符串的模式,如文本行中的?:,?',?和?+ 如果它是?:,那么它应该是:,,然后是,?然后是?和?+然后是+ 我试过了 sed-i的/\?:/:/g', sed-i“s/\?”/“/g”, sed-i的/\??/?/g'和 sed-i的/\?+/+/+/g' 虽然's/\?:/:/g'和sed-i“s/\?”/'/g“工作正常,但在使用sed-i's/\?/?/g'和sed-i's/\?+/+/g'时,我面临一些问题 图案没有正确更换。 请帮忙。 谢谢。使用perl,您可以:

我需要替换包含字符串的模式,如文本行中的
?:
?'
?+

如果它是
?:
,那么它应该是
然后是
然后是
?+
然后是
+

我试过了
sed-i的/\?:/:/g'

sed-i“s/\?”/“/g”

sed-i的/\??/?/g'

sed-i的/\?+/+/+/g'

虽然
's/\?:/:/g'
sed-i“s/\?”/'/g“
工作正常,但在使用
sed-i's/\?/?/g'
sed-i's/\?+/+/g'
时,我面临一些问题 图案没有正确更换。
请帮忙。
谢谢。

使用perl,您可以:

perl -api -e  "s/\?(?=[:'?+])//g" file.txt
这将删除每个问号
,该问号后面跟有sed的任何
+

sed -i -r "s/\?([\?:\+'])/\1/g" input_file.txt
它就地修改
输入文件.txt
-i
),并使用扩展正则表达式(
-r
),因此需要转义
+


如果找到该模式,它将用第二个字符替换整个模式。

与字符串中的字符相比,很难读懂文章中哪些字符是标点符号。请使用StackOverflow的内联代码格式;在你的字串和句型周围加上“嗨……我对这个问题做了一些编辑,使它更具可读性。”。我希望它更清楚。希望我已经按照要求完成了。非常感谢。它工作,但它打印终端中的更改,但我想内联编辑文件,即更改原始文件。你能帮个忙吗?非常感谢@Toto@ParvejIslam:不客气,很高兴能帮上忙。请随意将答案标记为已接受,请参见:我已尝试使用样本I/P.I/P-
+++?+:?:?:?:?:?:?:?,
。O/P应为
++::'',
,但我得到了
++:::?'',
。表示SED只进行了一次替换,即如果是
,则SED给出了
,但是应该是
。请帮助。