awk的批量replace功能

需求

现在需要替换一个文本

文本内容如下
$cat file
MD_D1TS_1_060_I
MD_D1TS_1_061_F
MD_D1TS_1_062_U
MD_D1TS_1_002_U
MD_D1TS_1_027_I
MD_D1TS_1_028_U
MD_D1TS_1_003_I
MD_D1TS_1_004_F
MD_D1TS_1_030_I
MD_D1TS_1_005_U
MD_D1TS_1_031_F
MD_D1TS_1_032_I
MD_D1TS_1_006_U
MD_D1TS_1_007_I
MD_D1TS_1_033_F
MD_D1TS_1_034_U
MD_D1TS_1_008_I
MD_D1TS_1_009_U
MD_D1TS_1_035_I
MD_D1TS_1_036_F

就是简单的替换,ctrl + F功能就能搞定的事

但由于数量太多13000+条数据,时间会浪费很多,而且容易出错

只需要每次把替换的内容修改一下,替换的内容都记录在文本name2name中

直接按照文本执行就可以了

$cat name2name
MD_D1TS_1_060 ATS1-1-60
MD_D1TS_1_061 ATS1-1-61
MD_D1TS_1_062 ATS1-1-62
MD_D1TS_1_002 ATS1-1-2
MD_D1TS_1_027 ATS1-1-27
MD_D1TS_1_028 ATS1-1-28
MD_D1TS_1_003 ATS1-1-3
MD_D1TS_1_004 ATS1-1-4
MD_D1TS_1_030 ATS1-1-30
MD_D1TS_1_005 ATS1-1-5
MD_D1TS_1_031 ATS1-1-31
MD_D1TS_1_032 ATS1-1-32
MD_D1TS_1_006 ATS1-1-6
MD_D1TS_1_007 ATS1-1-7
MD_D1TS_1_033 ATS1-1-33
MD_D1TS_1_034 ATS1-1-34
MD_D1TS_1_008 ATS1-1-8
MD_D1TS_1_009 ATS1-1-9
MD_D1TS_1_035 ATS1-1-35
MD_D1TS_1_036 ATS1-1-36

思路

遇到这个问题第一反应就是使用sed,还有就是windows下的notepad++,sublime等软件

但这里最重要的就是将name2name文件进行存储

然后按照这个对应处理

最后想了想还是用awk的数组最熟悉

将要替换的文件内容作为下标key,替换的内容作为值value

然后再读取下一个文件处理

遇到问题

这里算是一个小坑吧,记录下

原来都是直接将文件复制到vim里,然后处理

看内容太多了,使用剪切板速度慢,干脆直接用ftp传入

结果文件处理结果跟我不一样

后来就用了20行测试了一下,想看下问题出在哪里,得到的结果是正确的

我懵逼了,难道awk的数组有限制?毕竟13000+的内容

突然反应过来,windows下的格式问题

$dos2unix filename

解决

awk 'NR==FNR{a[$1]=$2;next}{for(i in a){sub(i,a[i])};print}' name2name file
简单的说明一下
使用NR==FNR;next功能等于将name2name文件内容存入数组
for(i in a)想要读取文件下标只有使用这个方法,而且没有顺序(哈希,我也不懂,但知道是随机顺序)
sub(find,replace) 这是awk一个自带的函数,就是一个replace功能

awk的批量replace功能的更多相关文章

  1. 使用js批量选中功能实现更改数据库中的status状态值(批量展示)

    我们在开发项目的时候经常会在后台管理时用到批量展示功能来动态的修改数据库的值.下面以修改数据库的status状态值来实现批量展示功能.批量选中功能引用js来实现.前端html代码: <table ...

  2. [Android Pro] Android 4.1 使用 Accessibility实现免Root自动批量安装功能

    reference to  :  http://www.infoq.com/cn/articles/android-accessibility-installing?utm_campaign=info ...

  3. 实例:SSH结合Easyui实现Datagrid的批量删除功能

    在我先前的基础上面添加批量删除功能.实现的效果如下 删除成功 通常情况下删除不应该真正删除,而是应该有一个标志flag,但flag=true表示状态可见,但flag=false表示状态不可见,为删除状 ...

  4. 关于awk的范围模式功能问题

    关于awk的范围模式功能问题 man awk中这样写到 The pattern1, pattern2 form of an expression is called a range pattern. ...

  5. awk -f program.file 功能使用

    一.awk -f program.file 功能使用 一直没有使用过awk的-f功能,感觉鸡肋,不是很实用,更多的是因为没有需求的原因 下面介绍下awk -f的使用方法 awk可以指定默认的文件路径, ...

  6. SSM实现批量删除功能

    批量删除功能的实现 其实实现这个功能还是挺简单的 因为我这是直接拼接的,所以用了DOM方法来获取id话不多说直接上代码首先是复选框全选和反选这里的话 获取最上面一个复选框的状态同步到拼接的复选框  $ ...

  7. layui表格的批量删除功能

    // 批量删除功能 // 1.得到table选中行内容 // 2.得到删除需要的唯一值,一般是id; // 3.将所要删除的项加入到数组中: // 4.判断是否选中: // 5.发送ajax请求,并附 ...

  8. 个人永久性免费-Excel催化剂功能第101波-批量替换功能(增加正则及高性能替换能力)

    数据处理无小事,正如没有人活在真空理想环境一下,在数据分析过程中,也没有那么真空理想化的数据源可以使用,数据处理占据数据分析的80%的时间,每一个小小的改善,获益都良多.Excel查找替换,有其局限性 ...

  9. Taurus.MVC 2.3.4 :WebAPI 文档集成测试功能升级:WebAPI批量自动化测试功能。

    前言: 最近升级了一下Taurus.MVC,现在最新版本是:Taurus.MVC 2.3.4,源码版本和nuget同步. 下面分三个步骤介绍下新版本的WebAPI批量自动化测试功能. 1.启用WebA ...

随机推荐

  1. 日期插件-flatpickr

    github的仓库地址:https://github.com/chmln/flatpickr 手册地址:http://www.htmleaf.com/Demo/201608213895.html    ...

  2. [bzoj1910] [Ctsc2002] Award 颁奖典礼

    应该是第一次写这种图形类的DP.. 一个“I”可以分成三个矩形..令f[1..3][i][j][k]表示第几个矩形,下边界为第i行的j~k列,的最大面积. 然后就是各种优化啊什么的...时间复杂度O( ...

  3. mysql 恢复数据

    前提:保存了需要恢复数据库的文件 .frm 和 .ibd 文件 条件:InnoDB 类型的 恢复表结构1.新建一个数据库--新建一个表,表名和列数和需要恢复数据库相同2.停止mysql服务器 serv ...

  4. 微信公众平台宣布增加接口IP白名单提高安全性

    微信公众平台目前已经发布通知在平台接口调用上为了提高安全性需要添加IP白名单并仅允许白名单IP调用. 目前微信公众平台面向开发者主要提供的开发者ID和开发者密钥,在调用时ID和密钥通过检验即可进行调用 ...

  5. JavaScript之BST

    自己尝试用js实现了数据结构的二叉查找树. // node function Node(data) { this.data = data; this.lc = null; this.rc = null ...

  6. spring boot项目编译出来的jar包如何更改端口号

    执行的时候更改端口即可 . java -Dserver.port=9999 -jar boot.jar

  7. MYSQL GROUP BY Optimization

    GROUP BY Optimization 常规的匹配group by(分组)操作子句是扫整表并且创建包含连续的分组行的临时表, 利用临时表得到group数据,运用appregate function ...

  8. 再叙Java反射

    Java中的反射 本文为反射的基础知识部分. 能够分析类能力的程序被称为反射(reflective). 反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,容许程序在运行时加载.探知. ...

  9. mysql 安装以及配置

    MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的.很多人下了zip格式的解压发现没有setup.exe,面对一堆文件一头雾 ...

  10. 基础数据类型的补充和深浅copy

    一:关于str 的操作方法补充 1,s.isspace()   判断字符串是否只由空格组成,是,为True,否则,为False. s = ' ' #只能是以至少一个空格组成的字符串(全空格) prin ...