Bash
Bash:在多個文件的指定列中選擇具有最高值的行,並創建一個輸出文件,其中行包含最大值
我有一個目錄,其中包含類似名稱的文件,如下所示
mi001 mi002 ... mi034 ...
我想做的是在第 14 列中找到最大值。然後我想將具有最大值的整行附加到輸出文件中。作為最終結果,我想要一個具有每個原始文件中最高行的輸出文件。
樣本文件
一個簡單的方法就是對文件進行排序並從每個文件中提取最後一行。例如,
for file in mi* do sort +13 -n $file | tail -1 done > result
+13
按第 14 列排序,-n
確保按數字順序排序。如果
+13
不起作用,您可以將排序語句替換為sort -k14,14 -n $file | tail -1
根據您提供的稀疏資訊,
awk
將像這樣工作(假設第一行中的空格或製表符分隔的欄位和標題):awk 'NR == 2 {totmax=$14 ; maxline=$0 ; filemax[FILENAME]=$14 ; fileline[FILENAME]=$0} FNR>1 && $14 > totmax {maxline=$14; totmax=$14} FNR>1 && ($14 > filemax[FILENAME] || !filemax[FILENAME]) {filemax[FILENAME]=$14 ; fileline[FILENAME]=$0 } END {print "line with total maximum:\n"maxline print "maximums for files:" for (file in filemax) {print file":",fileline[file]}}' mi*