AWK命令解析文件,并按字母顺序列出输出,包括每个项目的计数



输入文件(称为RESample.txt(包含

Rogue Exiles by name this session:           
Rogue Exiles by name this session:           OG VG
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           MS
Rogue Exiles by name this session:           AB TM
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           AR UM
Rogue Exiles by name this session:           MA
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           UM UM EG TO AV OG
Rogue Exiles by name this session:           AG AB OG
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           TH TM
Rogue Exiles by name this session:           JU OG
Rogue Exiles by name this session:           OG
Rogue Exiles by name this session:           TM
Rogue Exiles by name this session:           OG TO
Rogue Exiles by name this session:           TH AV VA
Rogue Exiles by name this session:           TH UT KO VA
Rogue Exiles by name this session:           TM UT
Rogue Exiles by name this session:           MA TO
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           OO
Rogue Exiles by name this session:           DL TH
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           TH TO ID AS XB AR
Rogue Exiles by name this session:           KO
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           OG AB ?
Rogue Exiles by name this session:           VA AS
Rogue Exiles by name this session:           EG
Rogue Exiles by name this session:           
Rogue Exiles by name this session:           ID AS
Rogue Exiles by name this session:           ID AS TI
Rogue Exiles by name this session:           VM AN
Rogue Exiles by name this session:           AB AV
Rogue Exiles by name this session:           ID
Rogue Exiles by name this session:           TO TM AR AS
Rogue Exiles by name this session:           XB
Rogue Exiles by name this session:           OO
Rogue Exiles by name this session:           TM
Rogue Exiles by name this session:  
Rogue Exiles by name this session:           ? MA
Rogue Exiles by name this session:           TH UT
Rogue Exiles by name this session:           ZD AB UM
Rogue Exiles by name this session:           AN UM
Rogue Exiles by name this session:           ST AR AV
Rogue Exiles by name this session:           UM
Rogue Exiles by name this session:           MS
Rogue Exiles by name this session:           ST
Rogue Exiles by name this session:           OG
Rogue Exiles by name this session:           AB
Rogue Exiles by name this session:           AN
Rogue Exiles by name this session:           AN OO
Rogue Exiles by name this session:           ID
Rogue Exiles by name this session:           TO
Rogue Exiles by name this session:           UM
Rogue Exiles by name this session:           EG
Rogue Exiles by name this session:           VA AR ? OG

Desired output is
AB (6)
AR (4)
MA (3)
OG (9)
?  (3)
Blank (19)

这个awk命令让我以某种方式获得所需的输出grep 'by name' RESample.txt|awk '{ORS=" "; for(i=7;i<=NF;i++) print $i}'|awk '{split ($0,POE); print POE[1]; print POE[2]; print POE[3]}'但我不知道如何根据需要完成获取整个数组加上每个值的计数的命令。

我也尝试过这个命令grep 'by name' RESample.txt|awk '{ORS=" "; for(i=7;i<=NF;i++) print $i}'|awk '{POE[$0]++;} END { for (i in POE) print i, POE[i];}'但这只打印整行和数组中最后一个项目的计数,不计算空白条目(UM EG VA AR?OG 1(,而不是所需的输出。

我需要什么命令来正确处理带有awk的输入字段,并使其吐出所需的输出?

更新-这个命令按字母顺序给我输出-根据我拥有的所有值运行(我可以在没有括号中的值的情况下生存(

grep 'by name' RESample.txt|awk '{POE[$7]++;} END { for (i in POE) print i, POE[i];}'|sort

19
? 1
AB 3
AG 1
AN 3
AR 1
DL 1
EG 2
ID 4
JU 1
KO 1
MA 2
MS 2
OG 5
OO 2
ST 2
TH 5
TM 3
TO 2
UM 3
VA 2
VM 1
XB 1
ZD 1

但有些人的计数不正确。这个例如,应该是3,而不是1,但其他值应该是。

您能尝试以下内容吗?这些内容是用GNUawk中显示的示例编写和测试的。在链接中编写并测试https://ideone.com/gfilsQ#stdin

awk '
{
sub(/.*this session: +/,"")
if(!NF){ arr["UnKnown"]++ } 
for(j=1;j<=NF;j++){
arr[$j]++
}
}
END{
for(k in arr){
print k,"("arr[k]")"
}
}' Input_file

最新更新