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给出了,
,但是应该是?
。请帮助。