使用awk,在基于相同模式汇总行时忽略casesensitive模式

使用awk,在基于相同模式汇总行时忽略casesensitive模式,awk,case-insensitive,counting,Awk,Case Insensitive,Counting,使用awk,我希望在基于相同模式总结行时忽略区分大小写的模式 我有以下几句话(非常感谢Andrey() 文件内容: 1 Used cars 12 Drivers 1 used cars 1 used cars 14 drivers 2 Used Cars 实际输出为 2 Used Cars 14 drivers 12 Drivers 2 used cars 1 Used cars 我需要的是: 26 drivers/Drivers (doesn't matter) 5 used

使用awk,我希望在基于相同模式总结行时忽略区分大小写的模式

我有以下几句话(非常感谢Andrey()

文件内容:

1 Used cars
12 Drivers
1 used cars
1 used  cars
14 drivers
2 Used Cars
实际输出为

2  Used Cars
14  drivers
12  Drivers
2  used cars
1  Used cars
我需要的是:

26 drivers/Drivers (doesn't matter)
5 used cars/Used Cars (doesn't matter)
谢谢!

来自

在程序中的特定点执行不区分大小写的匹配的一种方法是使用tolower()或toupper()内置字符串函数(我们尚未讨论;请参阅字符串函数)将数据转换为单个大小写。例如:

tolower($1)~/foo/{…}

另一种特定于gawk的方法是将变量IGNORECASE设置为非零值(请参见内置变量)。当IGNORECASE不为零时,所有regexp和字符串操作都忽略大小写

还要注意:在awk中,$1是第一列,$2是第二列,$0是整行。(您不想用整行索引数组)

这是我的机器上的工作原理:

awk'{a[tolower($2)”“tolower($3)]+=$1;}END{for(i in a){print a[i],i}}testing.txt

输出:

5 used cars
26 drivers
也许最简单的方法是:

awk  '{$0=tolower($0);n=$1;$1="";a[$0]+=n}END{for(i in a){print a[i], i}}' file

非常感谢您的回复。不幸的是,它不起作用(您的示例中没有一个)…输出是相同的。很抱歉,我自己提到了它,并在编辑中提供了一个工作版本。非常感谢!这就是我需要的!谢谢您,Kent!我非常感谢!
awk  '{$0=tolower($0);n=$1;$1="";a[$0]+=n}END{for(i in a){print a[i], i}}' file