使用 sed 在文件中替换复杂的命令

使用 sed 在文件中替换复杂的命令

我想替换下面的字符串

代替:print '状态代码:{code}'.format(code=r.status_code)

和:print('状态代码: {code}'.format(code=r.status_code))

这是我运行失败的命令

find ./ -type f -exec  gsed 's/'print 'Status Code: {code}'.format(code=r.status_code)'/'print('Status Code: {code}'.format(code=r.status_code))'/g' {} \;

我尝试使用 \ 来避免特殊字符效果,但仍然失败并且只是挂起。

find ./ -type f -exec  gsed -i 's/print \'Status Code: {code}\'.format\(code=r.status_code\)/print\(\'Status Code: {code}\'.format\(code=r.status_code\)\)/g' {} \;
> 
> 
> 

答案1

您可以在表达式周围使用双引号,或者关闭并重新打开每个文字周围的单引号',例如'\''

sed "s/print 'Status Code: {code}'.format(code=r.status_code)/print('Status Code: {code}'.format(code=r.status_code))/"


sed 's/print '\''Status Code: {code}'\''.format(code=r.status_code)/print('\''Status Code: {code}'\''.format(code=r.status_code))/'

相关内容