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. opencv提供的带参数例程

    body { font-family: @微软雅黑; font-size: 8pt; line-height: 1.5 } html,body { color: inherit; background ...

  2. 从交叉熵损失到Facal Loss

    1交叉熵损失函数的由来1.1关于熵,交叉熵,相对熵(KL散度) 熵:香农信息量的期望.变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大.其计算公式如下: 其是一个期望的计算,也是记录随 ...

  3. Mybatis中常用的SQL

    1.BaseResultMap <resultMap id="BaseResultMap" type="com.stylefeng.guns.common.pers ...

  4. 9、ABPZero系列教程之拼多多卖家工具 拼团提醒类库封装

    本篇开始正式做功能,我在开发拼团提醒之前,拼多多并没有放出拼团人数不足就提醒卖家的功能. 有这个想法主要来源于朋友的抱怨,我想这应该是大部分卖家的心声吧. 经过分析,拿到了几个api,不要问我api怎 ...

  5. js设计模式之惰性单例模式

    <html> <body> <button id="loginBtn">登录</button> </body> < ...

  6. ASP.NET Core Razor中处理Ajax请求

    如何ASP.NET Core Razor中处理Ajax请求 在ASP.NET Core Razor(以下简称Razor)刚出来的时候,看了一下官方的文档,一直没怎么用过.今天闲来无事,准备用Rozor ...

  7. sql针对某一字段去重,并且保留其他字段

    今天客户提了一个小需求,希望我能提供一条sql语句,帮助他对数据中 _field 这个字段的值去重,并且保留其他字段的数据.第一反应是select distinct,但这种语句在对某个字段去重时,无法 ...

  8. MATLAB命令大全+注释小结

    一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件.   !dir& 可以在dos状态下查看.2.who  可以查看当前工作空间变量名,    ...

  9. HDU 2639 Bone Collector II(01背包变形【第K大最优解】)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  10. [学习OpenCV攻略][003[初试牛刀——显示图片]

    cvLoadImage(路径) 加载指定路径的图片到内存 cvNamedWindow("窗口名称", 属性) 创建窗口,窗口名称用来被其他函数引用,属性:0表示窗口大小不变,CV_ ...