资讯平台网站模板,吃什么补肾最快最好,淮安网站建设制作,南昌网站建设机构我们经常会将2个有关联文本文件进行合并处理。分别从不同文件获取需要的列#xff0c;然后#xff0c;整体输出到一起。awk进行多文件处理时候#xff0c;常常会遇到2个方面问题#xff0c;第一个是怎么样合并多个文件为一个文件。第二个问题就是怎么样将多行合并为一行显示…我们经常会将2个有关联文本文件进行合并处理。分别从不同文件获取需要的列然后整体输出到一起。awk进行多文件处理时候常常会遇到2个方面问题第一个是怎么样合并多个文件为一个文件。第二个问题就是怎么样将多行合并为一行显示。我这里说下我的处理2种方法还有实现思路。 实例文本[chengmocentos5 shell]$ awk FNR1{print \r\nFILENAME}{print $0} a.txt b.txt a.txt
100 wang man
200 wangsan woman
300 wangming man
400 wangzheng manb.txt
100 90 80
200 80 70
300 60 50
400 70 20 需要合并得到结果 100 wang man 90 80200 wangsan woman 80 70300 wangming man 60 50400 wangzheng man 70 20 awk多文件操作方法一 实现思路 通过外部命令合并文件然后通过排序然后通过awk进行合并操作。 首先[chengmocentos5 shell]$ cat a.txt b.txt | sort -n -k1 |awk {print}
100 90 80
100 wang man
200 80 70
200 wangsan woman
300 60 50
300 wangming man
400 70 20
400 wangzheng man 现在需要把第一列相同的处理合并到一行这里需要用“next”语句。它操作可以参考awk 多行合并【next 使用介绍】常见应用4 继续[chengmocentos5 shell]$ cat a.txt b.txt | sort -n -k1 |awk NR%21{fd1$2\t$3;next}{print $0\tfd1}
100 wang man 90 80
200 wangsan woman 80 70
300 wangming man 60 50
400 wangzheng man 70 20 需要把几行合并经常用到方法是NR%num 然后将行值保存下来next该行。在输出时候打印出来。 awk多文件操作方法二 实现思路 不借助第3放工具打开直接通过awk 打开多个文件。然后可以通过FILENAME获得当前处理文件名。NR总记录 FNR当前文件记录,以及ARGC传入参数总数ARGV是数组各个参数值。 看下这些实例[chengmocentos5 shell]$ awk BEGIN{print ARGC,ARGV[0],ARGV[1],ARGV[2]}{print FILENAME,NR,FNR,$0} a.txt b.txt
3 awk a.txt b.txt
a.txt 1 1 100 wang man
a.txt 2 2 200 wangsan woman
a.txt 3 3 300 wangming man
a.txt 4 4 400 wangzheng man
b.txt 5 1 100 90 80
b.txt 6 2 200 80 70
b.txt 7 3 300 60 50
b.txt 8 4 400 70 20 程序代码[chengmocentos5 shell]$ awk
BEGIN{
if(ARGC3)
{exit 1;
} file;
}
{
aData[FILENAME,$1]ARGV[1]FILENAME?$0:$2\t$3;
}
END{
for(k in aData)
{split(k,idx,SUBSEP); if(idx[1]ARGV[1] (ARGV[2],idx[2]) in aData){print aData[ARGV[1],idx[2]],aData[ARGV[2],idx[2]] | sort -n -k1;}
}
} a.txt b.txt100 wang man 90 80
200 wangsan woman 80 70
300 wangming man 60 50
400 wangzheng man 70 20 代码说明 这里用到2维数组aData[文件名,关联列对应值] ,这种方法可以将多个文件内容。放入一个统一二维数组。然后循环数组通过if((i,j} in array) 查找对应列值在其它文件中是否存在。 以上是2种实现方法其中第一种思路较为简单很容易理解。第二种处理起来较为复杂。有更好方法大家给我分享。转载于:https://www.cnblogs.com/chengmo/archive/2010/10/15/1851983.html