如果您有一个文本文件并想要搜索和替换匹配模式的一部分,您将如何使用 perl 单行命令、sed 或 python 来完成?
例如:
"653433,78"
与 匹配[0-9]{6},[0-9]{2}
。
改成。,
.
答案1
您可以使用编号的子组。即:
寻找:
([0-9]{6}),([0-9]{2})
代替:
\1.\2
Python 中的示例:
import re
inp = '653433,78'
out = re.sub(r'([0-9]{6}),([0-9]{2})', r'\1.\2', inp)
print out
这将为你带来:
>>>'653433.78'
答案2
您可以捕获想要替换的模式周围的匹配部分,然后在替换语句中重复使用它。
cat yourfile | perl -p -e "s/([0-9]{6}),([0-9]{2})/\\1.\\2/g"
也可以使用具有前瞻和回顾的更复杂的解决方案(但这不支持您的模式中的通配符,例如 * 和 +)
cat yourfile | perl -p -e "s/(?<=[0-9]{6}),(?=[0-9]{2})/./g"