shell用蔽物余paste -d " " file1 file2 >file3
awk用awk 'NR==FNR{a[i]=$0i++}NR>FNR{print a[j]"蚂颂 "$0j++}' file1 file2 >file3
或宏滚用awk 'NR==FNR{a[FNR]=$0}NR>FNR{print a[FNR]" "$0}' file1 file2 >file3例 1 索引
a.txt 文件
内容如下:
b.txt文件如下
执行命令:
awk 'NR==FNR{a[$1]=$2}NR!=FNR{if($1 in a) print $1, a[$1], $2else print $1, 0, $2}' a.txt b.txt
输出结果
:
参数解释:
awk 'NR==FNR{a[$1]=$2}NR!=FNR{if($1 in a) print $1, a[$1], $2else print $1, 0, $2}' a.txt b.txt
NR==FNR{a[$1]=$2} : NR==FNR判断是否是第一个
文件,如果是第一个文件执行 {a[$1]=$2 } *** 作,将a.txt第一列作为key 第二列作为value生成索引a。 这一步执行后得出的结果宏改大概是 a={'20000401':'100000999', '20100503':'100000888'} (实际上并不是json结构)
NR!=FNR{if($1 in a) print $1, a[$1], $2else print $1, 0, $2} : 如果不是第一个文件, 这个例子中是指b.txt, 这段命令中 $1, $2 都是b.txt 中的第一、二列,逻辑很简单不解释了。
例 2. 统计
awk '{if (($3 >= 10 ) &&($3 <20)) _cnt_10+=1 else _cnt_20+=1} END {print _cnt_10, _cnt_20}' res.txt
awk '{if (($3 >= 10 ) &&($3 <20)) {_cnt_10+=1} else if($3>=0 &&$3<10) {_cnt_1+=1} else {_cnt_20+=1}} END {print _cnt_1,_cnt_10, _cnt_20}' res.txt
结果:局扒
上面两个范围统计的例子原理不难, 主要是语法难记, 需要注意蔽腊判的是我的mac笔记本里不能用elif 报语法错误, 只能用else if 不知道怎么回事。
评论列表(0条)