我是新來這個網站,並試圖學習awk。我試圖找到field3的最大值,按field1分組並打印所有最大值的字段。字段2包含時間,這意味着對於每個ITEM1有FIELD2,字段3的96個值和field4中awk組由多個列和非主鍵打印最大值
輸入文件:(逗號隔開)
item1,00:15,10,30
item2,00:45,20,45
item2,12:15,30,45
item1,00:30,20,56
item3,23:00,40,44
item1,12:45,50,55
item3,11:15,30,45
期望的輸出:
item1,12:45,50,55
item2,12:15,30,45
item3,11:15,30,45
我到目前爲止已經試過:
BEGIN{
FS=OFS=","}
{
if (a[$1]<$3){
a[$1]=$3}
}
END{
for (i in a){
print i,a[i]
}
但這只是打印
item1,50
item2,30
item3,30
但我需要打印相應的field2和field4的最大值,如所需的輸出中所示。請幫忙。
注輸出應該是'item3,23:00,40,44',因爲40是item3最大的第3列。 – fedorqui
如果可能發生,則在輸入/輸出中包含具有相同$ 1和$ 3但不同$ 2值的行,以便我們可以看到是否要輸出第一個或最後一個或所有匹配行。如果它不能發生然後說明。 –
@Ed Morton對於同樣的$ 1,$ 2是不同的,$ 3可以是相同的。關於你提出的解決方案它的工作原理,我只是不明白不使用!(最大$ 1)塊的結果。另一件我剛纔想到的情況是,如果兩列中的組分別表示$ 1和$ 2,那麼這個!(最大$ 1)塊和排序是如何工作的? – foxx