遍历替换文件中的某个关键字
时间:2019-10-11
本文章向大家介绍遍历替换文件中的某个关键字,主要包括遍历替换文件中的某个关键字使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
遍历替换文件中的某个关键字
有时遇到一个文件夹下有数百给文件,文件中需要替换某个关键字,或注释行……
手动重复修改很容易出错
这里使用grep/sed/python来简单处理,减轻劳动力
步骤
1. grep 搜索所有的文件,得到需要修改的文件列表,定向到一个文件
grep -rl #define.*0x80 |sort | uniq > sub_file_list
2. sed 尝试匹配修改,得到正确的正则表达式
echo "#define METAL_ISA_XL64_EXTENSIONS 0x8000000000000000UL" | sed \'s/\(#define.*\)\(0x80\)\(.*\)/\1 0x90\3/g\'
3. 使用python合并上述的步骤,得到修改全部文件的shell脚本
./substitude_KeyforPerLine.py --demo print
./substitude_KeyforPerLine.py -h
substitude_KeyforPerLine.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import argparse
# Create ArgumentParser() object
parser = argparse.ArgumentParser()
# Add argument
# parser.add_argument('--fl', required=True, help='need modified file list')
parser.add_argument('--fl', help='need modified file list')
parser.add_argument('--demo', help='print grep/sed demo')
# parser.add_argument('--total', type=int, help='number of dataset', default=100)
# Print usage
# parser.print_help()
# Parse argument
args = parser.parse_args()
flist = args.fl
def re_demo():
print("\n");
print(r'echo "#define METAL_ISA_XL64_EXTENSIONS 0x8000000000000000UL" | sed \'s/\(#define.*\)\(0x80\)\(.*\)/\1 0x90\3/g\'')
print(r'grep -rl #define.*0x80 |sort | uniq > sub_file_list'+'\n')
def gen_cmd():
read_list_f=open(flist,'r+')
write_cmd_f=open('modify_line.sh','w')
for line in read_list_f.readlines():
print(r"sed -i -e 's/\(#define.*\)\(0x80\)\(.*\)/\1 0x90\3/g' "+line.strip())
write_cmd_f.write(r"sed -i -e 's/\(#define.*\)\(0x80\)\(.*\)/\1 0x90\3/g' "+line.strip()+"\n")
read_list_f.close()
write_cmd_f.close()
if(args.demo == "print"):
re_demo()
if(flist):
gen_cmd()
原文地址:https://www.cnblogs.com/OneFri/p/11653428.html
- Android Studio添加PNG图片报错原因
- 剑指OFFER之包含min函数的栈(九度OJ1522)
- 使用VS2010开发Qt程序的一点经验
- 用Qt写软件系列五:一个安全防护软件的制作(3)
- 剑指OFFER之顺时针打印矩阵(九度OJ1391)
- 用Qt写软件系列五:一个安全防护软件的制作(2)
- 2018年值得关注的200场机器学习会议
- Linux开机启动(bootstrap)
- 剑指OFFER之树的子结构(九度OJ1520)
- 万物智联慧结成网:信息技术驱动物流产业转型升级
- 用Qt写软件系列五:一个安全防护软件的制作(1)
- Linux文件管理
- 为什么区块链会成为消除数字化营销障碍的解决方案
- TinyOS和Deluge的安装模拟(二)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel框架中间件简单使用方法示例
- PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
- Smarty模板语法详解
- PHP保留两位小数的几种方法
- PHP七种数据类型知识点总结
- PHP中__set()实例用法和基础讲解
- laravel框架分组控制器和分组路由实现方法示例
- 使用swoole 定时器变更超时未支付订单状态的解决方案
- Yii2 queue的队列使用详解
- ThinkPHP5+jQuery+MySql实现投票功能
- Smarty模板配置实例简析
- php利用ZipArchive类操作文件的实例
- Yii框架页面渲染操作实例详解
- PHP数据源架构模式之表入口模式实例分析
- PHP pthread拓展使用和注意点