awk打开多个文件的方法
来源:互联网 发布:linux快捷键 编辑:程序博客网 时间:2024/06/04 19:30
本文引自:http://www.cnblogs.com/Berryxiong/p/6209324.html
1、当awk读取的文件只有两个的时候,比较常用的有三种方法
(1)awk 'NR==FNR{...}NR>FNR{...}' file1 file2
(2)awk 'NR==FNR{...}NR!=FNR{...}' file1 file2
(3)awk 'NR==FNR{...;next}{...}' file1 file2
next表示下一个命令不被执行
2、当awk处理的文件超过两个时,显然上面那种方法就不适用了。因为读第3个文件或以上时,也满足NR>FNR (NR!=FNR),显然无法区分开来。
所以就要用到更通用的方法了:
(1)ARGIND 当前被处理参数标志: awk 'ARGIND==1{...}ARGIND==2{...}ARGIND==3{...}... ' file1 file2 file3 ...
(2)ARGV 命令行参数数组: awk 'FILENAME==ARGV[1]{...}FILENAME==ARGV[2]{...}FILENAME==ARGV[3]{...}...' file1 file2 file3 ...
(3)把文件名直接加入判断: awk 'FILENAME=="file1"{...}FILENAME=="file2"{...}FILENAME=="file3"{...}...' file1 file2 file3 ...
举例说明,这个例子在面试的时候问过。
a.txt中有一列:
A
B
C
D
E
b.txt中有两列:
A hello world
A good morning
B what
C sad
D interview someone
D feeling bad
E not so good
E want to be happy
F fail to pass the exam
G good result
则打印出b.txt中的行,满足b.txt中第一列等于a.txt的第一列。
#! /usr/bin/kshprint "Method1:########"awk 'ARGIND==1{test[NR]=$1} ARGIND==2{for(i in test){if(test[i]==$1){print $0}}}' a.txt b.txtprint "\nMethod2:########"#the '{" must at the same line of the NR!=FNRgawk 'NR==FNR{test[NR]=$1} NR!=FNR{ for( i in test) { if(test[i]==$1) print $0 } }' a.txt b.txtprint "\nMethod3:########"gawk 'NR==FNR{test[NR]=$1} NR>FNR{ for( i in test) { if(test[i]==$1) print $0 } }' a.txt b.txtprint "\nMethod4:########"gawk 'NR==FNR{test[NR]=$1;next} { for( i in test) { if(test[i]==$1) print $0 } }' a.txt b.txtprint "\nMethod5:########"gawk 'FILENAME==ARGV[1]{test[NR]=$1} FILENAME==ARGV[2]{ for( i in test) { if(test[i]==$1) print $0 } }' a.txt b.txtprint "\nMethod6:########"gawk 'FILENAME=="a.txt"{test[NR]=$1} FILENAME=="b.txt"{ for( i in test) { if(test[i]==$1) print $0 } }' a.txt b.txt
输出结果为:
Method1:########A hello worldA good morningB whatC sad D interview someoneD feeling badE not so goodE want to be happyMethod2:########A hello worldA good morningB whatC sad D interview someoneD feeling badE not so goodE want to be happyMethod3:########A hello worldA good morningB whatC sad D interview someoneD feeling badE not so goodE want to be happyMethod4:########A hello worldA good morningB whatC sad D interview someoneD feeling badE not so goodE want to be happyMethod5:########A hello worldA good morningB whatC sad D interview someoneD feeling badE not so goodE want to be happyMethod6:########A hello worldA good morningB whatC sad D interview someoneD feeling badE not so goodE want to be happy
- awk打开多个文件的方法
- 用vim打开多个文件的方法
- awk处理多个文件
- awk 多个文件合并
- awk处理多个文件
- awk 处理多个文件
- awk 处理多个文件
- awk处理多个文件
- awk处理多个文件
- awk处理多个文件
- awk如何实现处理多个文件(awk的join实现)
- 打开多个文件
- 打开多个文件 的对话框 转
- WebStorm 打开多个项目的方法
- 打开多个Activity退出的方法
- WebStorm 打开多个项目的方法
- excel2010打开多个页面的方法
- 用awk解压多个文件
- spring data jpa 分页
- 修改 下载仓库为淘宝镜像 npm config set registry http://registry.npm.taobao.org/ 3, 如果要发布自己的镜像需要修改回来 npm
- 无人超市缤果盒子软件
- Hadoop学习——最大的敌人是自己
- shiro 简介
- awk打开多个文件的方法
- fetch = FetchType.EAGER
- 使用dig名令获得DNS报文
- Logger的使用
- ReactiveCocoa常用类练习
- 从输入URL到页面展示
- LINUX驱动之SPI子系统之四spi_master的注册流程
- 鸟哥的LINUX私房菜第一章 学习笔记
- CSS层叠样式表基本样式的位置