打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
awk 同时处理多个文件

今天学习了一下用awk 处理多个文件,分享一下。

有一个文件 test1.txt内容如下:

  1. 10.37.212.3 host1  
  2. 10.38.212.52 host2  
  3. 10.39.34.22 host3  


另一个文件test2.txt内容如下:

  1. IP host1  
  2. IP host2  
  3. IP host3  
  4. IP host4  

需要将test2.txt 中的hostn 替换成test1.txt 中的相应IP,替换结果应该如下:

  1. IP 10.37.212.3  
  2. IP 10.38.212.52  
  3. IP 10.39.34.22  
  4. IP host4  


第一种方法,适用于2个及其以上的文件处理:

  1. awk 'FILENAME=="file1"{....}FILENAME=="file2"{....}' file1 file2  
  1. awk 'FILENAME==ARGV[1]{....}FILENAME==ARGV[2]{....}' file1 file2  
  1. awk 'ARGIND==1{....}ARGIND==2{....}' file1 file2  

 利用上面的方法实现需求:

  1. awk 'FILENAME=="test.txt" {ar[$2]=$1}; FILENAME=="test2.txt"{if($2 in ar) {print $1,ar[$2]} else {print $0}}' test.txt test2.txt  
  1. awk 'FILENAME==ARGV[1] {ar[$2]=$1}; FILENAME==ARGV[2]{if($2 in ar) {print $1,ar[$2]} else {print $0}}' test.txt test2.txt  
  1. awk 'ARGIND==1 {ar[$2]=$1}; ARGIND==2{if($2 in ar) {print $1,ar[$2]} else {print $0}}' test.txt test2.txt  

还有一种方法, 更多的用于2个文件的处理:

  1. awk 'NR==FNR{处理第一个文本;next}{处理第二个文本}' file1 file2  
  1. awk 'NR==FNR{.....}NR>FNR{....}' file1 file2  

利用上面的公式实现需求:

  1. awk 'NR==FNR{ar[$2]=$1;next}{if($2 in ar) {print $1,ar[$2]} else {print $0}}' test.txt test2.txt  
  1. awk 'NR==FNR{ar[$2]=$1}NR>FNR{if($2 in ar) {print $1,ar[$2]} else {print $0}}' test.txt test2.txt  



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
awk 入门——强大的文本分析工具
《shell编程指南》读书笔记(三)——文本处理(正则表达式,grep,awk,sed)
linux查找目录下的所有文件中是否含有某个字符串
Linux必学技能:文本操作三剑客(awk/sed/grep)应用实例
常用文本处理命令
windws下面使用gawk的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服