Unix awk基于特定列数据创建包含重复数的列
在以下data.txt文件中,第2列和第3列中的值在几行内重复(尽管行不相同): 如何根据每行第2列和第3列内容添加第5列,指定最大重复次数? 例如,所需的输出将如下所示:Unix awk基于特定列数据创建包含重复数的列,unix,awk,count,counter,Unix,Awk,Count,Counter,在以下data.txt文件中,第2列和第3列中的值在几行内重复(尽管行不相同): 如何根据每行第2列和第3列内容添加第5列,指定最大重复次数? 例如,所需的输出将如下所示: cat desired.output.txt > Julie Andrews jand 109 2 Julie Andrews jand 119 2 John Thomas jd 301 1 Alex Tremble atrem 415
cat desired.output.txt >
Julie Andrews jand 109 2
Julie Andrews jand 119 2
John Thomas jd 301 1
Alex Tremble atrem 415 3
Alex Tremble atrem 3415 3
Alan Tremble atrem 215 3
John Tomas jd 302 4
John Tomas jd 3302 4
John Tomas jd 3402 4
John Tomas jd 33302 4
Alex Trebe atrem 416 1
目前,我有以下命令,它为每个副本创建一个简单计数器(但是,这不是所需的输出):
对于未排序的文件,最简单也是最方便的方法是双重扫描输入文件
$ awk -v OFS='\t' 'NR==FNR {count[$2,$3]++; next}
{print $0, count[$2,$3]}' file{,}
Julie Andrews jand 109 2
Julie Andrews jand 119 2
John Thomas jd 301 1
Alex Tremble atrem 415 3
Alex Tremble atrem 3415 3
Alan Tremble atrem 215 3
John Tomas jd 302 4
John Tomas jd 3302 4
John Tomas jd 3402 4
John Tomas jd 33302 4
Alex Trebe atrem 416 1
如果文件已排序或太大,则可以收集所有条目,并在上下文更改时打印计数
ps.请注意,
文件{,}
是一种bash速记,用于文件文件
两次处理同一文件。对于未排序的文件,最简单的方法是双重扫描输入文件
$ awk -v OFS='\t' 'NR==FNR {count[$2,$3]++; next}
{print $0, count[$2,$3]}' file{,}
Julie Andrews jand 109 2
Julie Andrews jand 119 2
John Thomas jd 301 1
Alex Tremble atrem 415 3
Alex Tremble atrem 3415 3
Alan Tremble atrem 215 3
John Tomas jd 302 4
John Tomas jd 3302 4
John Tomas jd 3402 4
John Tomas jd 33302 4
Alex Trebe atrem 416 1
如果文件已排序或太大,则可以收集所有条目,并在上下文更改时打印计数
ps.请注意,
文件{,}
是一种bash速记,用于文件文件
处理同一文件两次。您的文件不能包含John Andrews jand 109
?如果是这样的话,添加它以显示当普通的第2+3列有不同的第1列时输出的样子。您的文件不能包含John Andrews jand 109
?如果是这样,添加它以显示当公共第2+3列有不同的第1列时,输出将是什么样子。
$ awk -v OFS='\t' 'NR==FNR {count[$2,$3]++; next}
{print $0, count[$2,$3]}' file{,}
Julie Andrews jand 109 2
Julie Andrews jand 119 2
John Thomas jd 301 1
Alex Tremble atrem 415 3
Alex Tremble atrem 3415 3
Alan Tremble atrem 215 3
John Tomas jd 302 4
John Tomas jd 3302 4
John Tomas jd 3402 4
John Tomas jd 33302 4
Alex Trebe atrem 416 1