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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yujin2010good/article/details/79051607
使用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

猜你喜欢

转载自blog.csdn.net/yujin2010good/article/details/79051607