本文介绍了比较行和打印相同的值相同的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样一个输入:
A 118791136点¯x
一118791136点¯x
一118791136点¯x
一118791136点¯x
乙118791136点¯x
乙23456433点¯x
乙23456433点¯x
乙23456433点¯x
。
。
。
我想将其转换为输出,如:
A 118791136 XXXXX
乙23456433 XXX
。
。
。
我知道一点点的Perl,但我不知道如何行比较行
非常感谢你提前
如果我们有
A 118791136点¯x
一23456433点¯x
乙34222223点¯x
乙56444233点¯x
怎么可能有这样的输出:
A 118791136,23456433 X,X
乙34222223,56444233 X,X
...
...
解决方案
这件使得它:
$ AWK'{a [$ 1,$ 2] = A [$ 1,$ 2] $ 3} END {为(我的){打印I,A [I]}}'文件
B118791136点¯x
A118791136 XXXX
B23456433 XXX
只是存储在一个数组的结果,其第一和第二场为指标。最后,它打印的结果。
结果给出 B23456433
而不是 B 23456433
,试图分裂它... sed的
使得它:
$ AWK'{a [$ 1,$ 2] = A [$ 1,$ 2] $ 3} END {为(我的){打印I,A [I]}}'文件| SED的/ \\([A-Z] \\)/ \\ 1 /'
乙118791136点¯x
一118791136 XXXX
乙23456433 XXX
根据
$ AWK'{a [$ 1,$ 2] = A [$ 1,$ 2] $ 3} END {为(我的){拆分(I,B,SUBSEP);印片B [1],B [2],A []}}'文件
乙118791136点¯x
一118791136 XXXX
乙23456433 XXX
更新基于新的注释
$ awk '{a[$1,$2]=a[$1,$2]$3} END{for (i in a) {split(i,b,SUBSEP); print b[1], b[2], a[i], length(a[i])}}' file
B 118791136 x 1
A 118791136 XxXX 4
B 23456433 XXx 3
这篇关于比较行和打印相同的值相同的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!