• 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功能
    
  • 相关阅读:
    构建之法阅读笔记03
    周进度条
    周活动总结表
    电脑桌面美化
    如何让自己进步,去做成一件事
    后台网站
    laravel RBAC权限管理学习
    laravle定时任务
    django第一次简单讲解使用
    css3网页的淡入淡出效果
  • 原文地址:https://www.cnblogs.com/irockcode/p/7906192.html
Copyright © 2020-2023  润新知