zoukankan      html  css  js  c++  java
  • awk的批量replace功能

    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功能
    
  • 相关阅读:
    简单小练习_阅读稍后提醒
    简单小练习_切换工作空间
    简单小练习_自动拉微信群
    简单小练习_定制群发微信消息
    简单小练习_文本搜索自动解压并删除文件
    简单小练习_自动收集文件到文件夹
    简单小练习_文本搜索
    获取微博广告博文数据
    最大堆
    Windows安装部署Tensorflow object detect过程中的问题处理
  • 原文地址:https://www.cnblogs.com/irockcode/p/7906192.html
Copyright © 2011-2022 走看看