我有包含以下行的txt文件:
22 ./06a_kéz.model.txt
22 ./08a_ív.model.txt
23 ./12_iker.model.txt
23 ./15_szék.model.txt
14 ./06_ta.model.txt
1 ./03a_ösc.model.txt
我需要选择分数较高的行,我尝试这样做:
awk '{ if ($1 > score) score=$1" "$2}END{print score}'
但我需要在这个给定的例子中提取得分最高的两行。
预期产出:
23 ./12_iker.model.txt
23 ./15_szék.model.txt
答案 0 :(得分:1)
在awk中使用这个标准2传递模式:
awk 'FNR==NR{if ($1>max) max=$1; next} $1==max' file file
23 ./12_iker.model.txt
23 ./15_szék.model.txt
替代方案你可以使用这个更长的单通道awk命令:
awk '$1>=max{max=$1; a[max] = (a[max]!="")?a[max] ORS $0: $0} END{print a[max]}' file
23 ./12_iker.model.txt
23 ./15_szék.model.txt
答案 1 :(得分:0)
我这里没有awk
进行测试,但会尝试类似这样的脚本:
{ if ($1 == score) { result = result $0 "\n"}
if ($1 > score) { score=$1; result = $0 "\n"}}
END {print result}
作为一个单行:
awk '{ if ($1 == score) { result = result $0 "\n"} if ($1 > score) { score=$1; result = $0 "\n"}} END{print result}'
答案 2 :(得分:0)
没有awk(假设你的分数在一个名为file的文件中,分数与其余部分之间有空格):
grep "^$(cut -d " " -f1 file | sort -rn | head -1) " file