sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。现在用python简单实现sed的主要命令,将old_text替换为new_text,同时将原来的文件备份,原有的文件被修改。

sed.py的内容如下:

 import sys
import os
import shutil if len(sys.argv) < 4:
sys.exit("usage:sed.py old_text new_text file_name") # 假定程序的参数是正确的
# 取参数赋值
progran_ame, old_text, new_text, arg_file_name = sys.argv
print(progran_ame, old_text, new_text, arg_file_name) if not os.path.exists(arg_file_name):
sys.exit("文件%s不存在" % arg_file_name) # 判断输入的参数是否为绝对路径, 如果是相对路径则取得绝对路径
if os.path.isabs(arg_file_name):
src_file = arg_file_name
else:
src_file = os.path.realpath(arg_file_name) # 将原来的文件重新命名,得到备份文件名
src_path_name = os.path.dirname(src_file)
src_file_name = os.path.basename(src_file)
bak_file_name = os.path.splitext(src_file_name)[0]+'_bak'+os.path.splitext(src_file_name)[1]
back_file = src_path_name+os.sep+bak_file_name # 备份文件
shutil.copy(src_file, back_file) out_file = open(src_file, 'w', encoding='utf-8')
# 对文件的每一行进行遍历,同时进行替换操作
with open(back_file, encoding='utf-8') as f:
for line in f:
out_file.writelines(line.replace(old_text, new_text)) out_file.close()

测试

test.txt文件内容如下

bj您好
我是小笨蛋
欢迎你……bj

python sed.py bj 北京 test.txt

将test.txt中"bj"替换为"北京"

执行后,生成test_bak.txt文件,内容和test.txt一样。test.txt中的内容变为

北京您好
我是小笨蛋
欢迎你……北京

用python3实现linux的sed功能的更多相关文章

  1. linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号

    linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号 实现的功能是吧换行符换成逗号了,自己试验过. 求解释,:t N b t 都是什么意思??? :t 定义la ...

  2. linux(centos8):sed命令的应用例子

    一,sed命令的用途 sed是Linux下一款功能强大的非交互流式文本编辑器, 可以对文本文件进行增.删.改.查等操作, 支持按行.按字段.按正则匹配文本内容. 说明:刘宏缔的架构森林是一个专注架构的 ...

  3. linux中sed命令(全面解析)

    目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...

  4. 基于LINUX的多功能聊天室

    原文:基于LINUX的多功能聊天室 基于LINUX的多功能聊天室 其实这个项目在我电脑已经躺了多时,最初写完项目规划后,我就认认真真地去实现了它,后来拿着这个项目区参加了面试,同样面试官也拿这个项目来 ...

  5. Linux三剑客-SED

    1.Sed是什么 Sed:字符流编辑器,Stream Editor 2.Sed功能与版本 处理日志文件,日志,配置文件等 增加.删除.修改.查询 sed --version 可以通过man sed 来 ...

  6. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  7. shell实现linux回收站的功能

    shell实现linux回收站的功能 下载: https://gitee.com/LoongWang/shellrecycling/repository/archive/master.zip 代码: ...

  8. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  9. python之模块copy_reg(在python3中为copyreg,功能基本不变)

    # -*- coding: utf-8 -*-#python 27#xiaodeng#python之模块copy_reg(在python3中为copyreg,功能基本不变) import copy_r ...

随机推荐

  1. 今天用C#做的一个小的注册练习

    下边是实现的代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Dat ...

  2. SQLSERVER误删Windows登录用户

    SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法   SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇 ...

  3. [转]ARM64 Function Calling Conventions

    from apple In general, iOS adheres to the generic ABI specified by ARM for the ARM64 architecture. H ...

  4. .NET面向对象特性之多态

    .NET面向对象特性之多态 前言 上一篇总结了面向对象三大特性之一的继承,再接再厉,这一章继续总结多态.同时把继承中涉及到多态的内容进一步补充扩展.可以说“继承”是多态的根基.但继承主要关注的是“共通 ...

  5. Jquery文本框值改变事件(支持火狐、ie)

    Jquery值改变事件支持火狐和ie浏览器,并且测试通过,绑定后台代码可以做成autocomplete控件. 具体代码列举如下: $(document).ready(function () { $(& ...

  6. javascript eval和JSON之间的关系

    eval函数的工作原理 eval函数会评估一个给定的含有javascript代码的字符串,并且视图去执行包含在字符串里的表达式或者 一系列的合法的javascript语句.eval函数将把最后一个表达 ...

  7. C++套接字类CxUdpSocket的设计

    C++套接字类CxUdpSocket的设计 这是一个小巧的C++套接字类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣能),个人习惯而已,如有雷同,纯属巧合. CxUdpS ...

  8. MySQL的一些基本查询,创建存储过程等

    常用的查询条件有1.比较:=,<,>,<=,>=,!=,<>,!>,!<              2.确定范围:between and,not bet ...

  9. Redis监控数据分布工具Redis-audit 使用总结

    Redis-audit 是一个用ruby实现的脚本,通过它,我们可以知道每一类 key 对内存的使用量.它可以提供的数据有:某一类 key 值的访问频率如何,有多少值设置了过期时间,某一类 key 值 ...

  10. Python2 中文编码处理

    今天写了几个脚本,都遇到了中英文混编的情况.需求要将其中的中文标点符号切换为英文符号. 举个例子: tags = '你好,good, 国语' 要将其中的中文半角逗号替换为英文逗号,为了方便后续的处理 ...