【发布时间】:2021-10-06 22:15:47
【问题描述】:
我有很多这样的 Python2 文件
datetime(2019, 04, 11)
datetime(2019, 10, 01)
datetime(2019, 04, 05, 1, 1)
要将此代码迁移到 Python3,我必须删除第二个和第三个日期时间参数中的前导 0。
我知道如何将 sed 用于像这样的简单模式:
sed -e 's/01/1/g' -e 's/02/2/g' -e 's/03/3/g' my.py
但我的模式更复杂:我应该只修改 datetime() 的第二个和第三个参数。如何使用 sed 或任何其他命令行工具来完成?
以下命令尝试使用如下简单的静态模式在代码库中查找所有要修改的字符串:
find . -name "*.py" | xargs grep datetime | grep '01\|02\|03\|04\|05\|06\|07'
但它也有与上面相同的问题:grep 模式不够具体 - 上面的模式不应该查看整个字符串,只能查看 datetime() 的第二个和第三个参数。
【问题讨论】:
-
sed 's/ 0/ /g'? -
如果
sed 's/ 0/ /g'不是您所需要的,那么edit 您的问题可以提供更真实的代表性样本输入,尤其是在datetime()在第4 或第5 领先0s 的情况下论据。