如何使用 vim 或 sed 替换 5 个不同文件中的 ~60 个打印条目?

如何使用 vim 或 sed 替换 5 个不同文件中的 ~60 个打印条目?

包含 Python 文件的 Fabfile(目录):

print "DEBUG fab_helper DRYRUN: True"+var
print "DEBUG fab_helper DRYRUN: True"
#print "DEBUG cfn_stackname: "+cfn_stackname

到:

LOGGER.DEBUG("DEBUG fab_helper DRYRUN: True"+var)
LOGGER.DEBUG("DEBUG fab_helper DRYRUN: True")
LOGGER.DEBUG("DEBUG cfn_stackname: "+cfn_stackname)

如何用我的记录器模块替换所有这些条目?我应该使用 vim 还是 sed?

答案1

我认为第二行的缺失和第三行的)重复是转录错误?"

sed 's/^#*print \(.*\)/LOGGER.DEBUG(\1)/' ujjain
LOGGER.DEBUG("DEBUG fab_helper DRYRUN: True"+var)
LOGGER.DEBUG("DEBUG fab_helper DRYRUN: True")
LOGGER.DEBUG("DEBUG cfn_stackname: "+cfn_stackname)

答案2

awk '{$1="";print $0}' filename|sed "s/^/LOGGER.DEBUG\(/g"| sed "s/$/)/g"

输出:

LOGGER.DEBUG( "DEBUG fab_helper DRYRUN: True"+var)
LOGGER.DEBUG( "DEBUG fab_helper DRYRUN: True")
LOGGER.DEBUG( "DEBUG cfn_stackname: "+cfn_stackname)

答案3

使用 Vim:加载所有 py 文件vim *.py,然后执行以下操作:

:bufdo %s/^ *#\?print \("DEBUG .*\)$/LOGGER.DEBUG(\1)/

该命令对每个加载的文件:bufdo运行替换命令 ( )。%s/...:help :bufdo

相关内容