我需要在一行文本中替换包含?:
,?'
,??
和?+
等字符串的模式。
如果?:
那么它应该是:
,?'
然后是'
,??
,那么?
和?+
则+
。
我试过了
sed -i 's/\?:/:/g'
,
sed -i "s/\?'/'/g"
,
sed -i 's/\??/?/g'
和
sed -i 's/\?+/+/g'
。
虽然's/\?:/:/g'
和sed -i "s/\?'/'/g"
工作正常但我在使用sed -i 's/\??/?/g'
和sed -i 's/\?+/+/g'
时遇到了一些问题。
图案未被正确替换。
请帮忙。
感谢。
答案 0 :(得分:1)
使用perl,你可以这样做:
perl -api -e "s/\?(?=[:'?+])//g" file.txt
这将删除?
,:
,'
或?
+
答案 1 :(得分:0)
使用sed:
sed -i -r "s/\?([\?:\+'])/\1/g" input_file.txt
它会修改input_file.txt
到位(-i
)并使用扩展的正则表达式(-r
),因此需要转义?
和+
。< / p>
如果找到模式,它会用第二个字符替换整个模式。