awk'FNR==1{print FILENAME}'a.txt b.txt c.txt ARGIND:参数的索引值(Argument Index)。存储你当前正在处理的文件在ARGV中的索引值。因此,当awk正在处理的参数刚好是文件的时候,“FILENAME==ARGV[ARGIND]”总是会返回true。 ENVIRON:这是一个数组变量,保存了shell的环境变量。 ENVIRON["SHELL_ENV"] # 这里...
ARGIND 顾名思义,就是ARG (arguments)的index awk'ARGIND==1{a[$1]}ARGIND==2&&($1 in a){print $0}'A B 解释 ARGIND==1 处于读取第一个参数时,hash a存储左侧第一个元素$1 ARGIND==2 处于读取第二个参数时,如果左侧第一个元素也在hash keys 中,则输出当前行 简而言之,选取AB 共同拥有的行 AR...
方法一: awk -F'|' 'ARGIND==1{a[$2]=$0} ARGIND==2 {print a[$1]FS$2 }' 1.txt2.txt 解析:ARGIND表示awk正在处理的文件(文件用1,2,3…来表示,例如1代表1.txt),ARGIND==1处理第一个文件(1.txt),将每条记录赋值给数组a,ARGIND==2处理2.txt文件,无条件执行{print a[$1]FS$2},此时$1...
ARGIND : 命令行中当前文件的位置(从0开始算)。 ARGV : 包含命令行参数的数组。 CONVFMT : 数字转换格式(默认值为%.6g)。 ENVIRON : 环境变量关联数组。 ERRNO : 最后一个系统错误的描述。 FIELDWIDTHS : 字段宽度列表(用空格键分隔)。 FILENAME : 当前输入文件的名。 NR : 表示记录数,在执行过程中对应...
你的理解是正确的,而且这行命令也是正确的,我测试了一下,也能正常执行 是否你并非是在shell下面执行的呢?或者是awk执行文件有误? 检查一下吧 如果你是要放在dos下执行的话,需要把单引号换成双引号,否则|会被认作管道符 ARGIND就是指参数文件的序号,这里t1为1,t2为2 ...
ARGIND:参数的索引值(Argument Index)。存储你当前正在处理的文件在ARGV中的索引值。因此,当awk正在处理的参数刚好是文件的时候,“FILENAME==ARGV[ARGIND]”总是会返回true。 ENVIRON:这是一个数组变量,保存了shell的环境变量。 ENVIRON["SHELL_ENV"] # 这里的SHELL_ENV要替换成shell下具体的环境变量。
第一种: awk 'ARGIND==1{...}ARGIND==2{...}ARGIND==3{...} ...' file1 file2 file3 ... 第二种:awk 'FILENAME==ARGV[1]{...}FILENAME==ARGV[2]{...}FILENAME==ARGV[3]{...}...' file1 file2 file3 ... 第三种:awk 'FILENAME=="file1"{...}FILENAME=="file2"{...}...
awk--dump-variables''# 查看文件awkvars.outcatawkvars.outARGC:number(1)ARGIND:number(0)ARGV:array,1elementsBINMODE:number(0)CONVFMT:string("%.6g")ERRNO:number(0)FIELDWIDTHS:string("")FILENAME:string("")FNR:number(0)FS:string(" ")IGNORECASE:number(0)LINT:number(0)NF:number(0)NR:number...
[G] ARGIND 命令行中当前文件的位置(从0开始算)。 [N] ARGV 包含命令行参数的数组。 [G] CONVFMT 数字转换格式(默认值为%.6g)。 [P] ENVIRON 环境变量关联数组。 [N] ERRNO 最后一个系统错误的描述。 [G] FIELDWIDTHS 字段宽度列表(用空格键分隔)。 [A] FILENAME 当前输入文件的名。 [P] FNR 同...