如何按排序$NF|"sort -u"然后打印整行
column1 COlumn2 column3
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0001 1.46 Jul 25 2019 I42 v2.14 (09/05/2019) ov0001
ov0001 1.45 Jun 27 2019 I42 v2.32 (03/09/2020) ov0001
ov0001 1.45 Jun 27 2019 I42 v2.32 (03/09/2020) ov0001
ov0001 1.45 Jun 27 2019 I42 v1.26 (11/14/2017) ov0001
ov0001 1.35 Aug 14 2018 I42 v1.42 (06/20/2018) ov0001
ov0001 1.35 Aug 14 2018 I42 v1.42 (06/20/2018) ov0001
ov0001 1.35 Aug 14 2018 I42 v1.42 (06/20/2018) ov0001
Run Code Online (Sandbox Code Playgroud)
在下面尝试但没有用。
$ awk '{print $NF;$0}' hwversion
Run Code Online (Sandbox Code Playgroud)
或者
$ awk '{if (print $NF|"sort -u"), print $0}' hwversion
Run Code Online (Sandbox Code Playgroud)
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0001 1.46 Jul 25 2019 I42 v2.14 (09/05/2019) ov0001
Run Code Online (Sandbox Code Playgroud)
使用您显示的示例,请尝试执行以下操作。这将根据最后一列获得第二列的最大值,它还将保留第二列与最后一列相同的多次出现(如果第二字段中的最大值与最后一列的多于 1 行相同)。
awk '
FNR==1{
print
next
}
{
arr[$NF]=(arr[$NF]>=$2?arr[$NF]:$2)
val[$NF,$2]=(val[$NF,$2]?val[$NF,$2] ORS:"")$0
}
END{
for(key in arr){
print val[key,arr[key]] | "sort -k" NF "r"
}
}
' Input_file
Run Code Online (Sandbox Code Playgroud)
这是gnu-awk在单个命令中获取此命令的命令:
awk 'NR > 1 && (!($NF in map) || $2 > map[$NF]) {map[$NF] = $2; rec[$NF] = $0}
END {PROCINFO["sorted_in"]="@ind_str_desc"; for (i in rec) print rec[i]}' file
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0001 1.46 Jul 25 2019 I42 v2.14 (09/05/2019) ov0001
Run Code Online (Sandbox Code Playgroud)
如果需要,您也可以获取标题行:
awk 'NR == 1 {print; next} !($NF in map) || $2 > map[$NF] {map[$NF] = $2; rec[$NF] = $0}
END {PROCINFO["sorted_in"]="@ind_str_desc"; for (i in rec) print rec[i]}' file
column1 COlumn2 column3
ov0002 1.40 Feb 05 2019 I42 v2.04 (04/18/2019) ov0002
ov0001 1.46 Jul 25 2019 I42 v2.14 (09/05/2019) ov0001
Run Code Online (Sandbox Code Playgroud)