使用python开发类似于sed功能,实现替换功能

本文介绍了一段Python脚本,该脚本模仿了sed命令的功能,能够在指定文件中进行字符串搜索并替换。通过命令行参数指定旧字符串、新字符串及目标文件名,脚本会创建备份文件并在原文件中执行替换操作。
使用python开发类似于sed功能,实现替换功能

#!/usr/bin/env python
#_*_ coding:utf-8 _*_
import sys,os

if len(sys.argv) <= 4:
    print "Usage: ./file_replace.py old_text new_text filename"
old_text,new_text = sys.argv[1],sys.argv[2]

file_name = sys.argv[3]          
#打开文件
f = file(file_name,'rb')  
#打开一个新的文件   
new_file = file('.%s.bak' % file_name,'wb')
#循环原文件
for line in f.xreadlines():
    #写然后替换
    new_file.write(line.replace(old_text,new_text))
f.close()
new_file.close()

if '--bak' in sys.argv:
    #unchanged
    os.rename(file_name,'%s.bak' %file_name) 
    #changed    
    os.rename('.%s.bak' %file_name,file_name)
else:
    #replace
    os.rename('.%s.bak' %file_name,file_name)

[root@node01 python]# python file_replace.py : '|' passwd    修改成功
[root@node01 python]#cat passwd
wolf01|x|502|502||/home/wolf01|/bin/bash
wolf02|x|503|503||/home/wolf02|/bin/bash
wolf03|x|504|504||/home/wolf03|/bin/bash
wolf04|x|505|505||/home/wolf04|/bin/bash
wolf05|x|506|506||/home/wolf05|/bin/bash
wolf06|x|507|507||/home/wolf06|/bin/bash
wolf07|x|508|508||/home/wolf07|/bin/bash
wolf08|x|509|509||/home/wolf08|/bin/bash
wolf09|x|510|510||/home/wolf09|/bin/bash
wolf10|x|511|511||/home/wolf10|/bin/bash    
[root@node01 python]# python file_replace.py '|' ":" passwd  --bak
[root@node01 python]#cat passwd
wolf01:x:502:502::/home/wolf01:/bin/bash
wolf02:x:503:503::/home/wolf02:/bin/bash
wolf03:x:504:504::/home/wolf03:/bin/bash
wolf04:x:505:505::/home/wolf04:/bin/bash
wolf05:x:506:506::/home/wolf05:/bin/bash
wolf06:x:507:507::/home/wolf06:/bin/bash
wolf07:x:508:508::/home/wolf07:/bin/bash
wolf08:x:509:509::/home/wolf08:/bin/bash
wolf09:x:510:510::/home/wolf09:/bin/bash
wolf10:x:511:511::/home/wolf10:/bin/bash
[root@node01 python]# ll |grep passwd         生成了一个bak文件
-rw-r--r-- 1 root root 2257 Aug 18 04:00 passwd
-rw-r--r-- 1 root root 2257 Aug 18 03:55 passwd.bak
[root@node01 python]##cat passwd.bak          bak文件未修改
wolf01|x|502|502||/home/wolf01|/bin/bash
wolf02|x|503|503||/home/wolf02|/bin/bash
wolf03|x|504|504||/home/wolf03|/bin/bash
wolf04|x|505|505||/home/wolf04|/bin/bash
wolf05|x|506|506||/home/wolf05|/bin/bash
wolf06|x|507|507||/home/wolf06|/bin/bash
wolf07|x|508|508||/home/wolf07|/bin/bash
wolf08|x|509|509||/home/wolf08|/bin/bash
wolf09|x|510|510||/home/wolf09|/bin/bash
wolf10|x|511|511||/home/wolf10|/bin/bash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值