我有一个大文件,有 50 多列和 100K 行,由 |
分隔。现在$2
(col 2) 具有多种类型的 $1
(col 1) 值,这意味着 col 2 将被重复。所以我对文件进行了排序。我现在需要根据以下条件提取/过滤结果文件:
- 条件 1 :当
$2
具有两种类型的$1
($2
的$1
值大于 8000 且小于 8000)时,选择给定$2
$1
<8000 的完整行 - 条件 2:如果
$2
只有$1 > 8000
则选择具有最大值$8
的完整行
例如:源文件
4000|1234||||||23
5000|1234||||||22
9000|1234||||||25
10000|123|||||||22
22000|456|||||||27
15000|456|||||||29
结果文件将具有:
9000|1234||||||25
10000|123|||||||23
15000|456|||||||29
任何人都可以就此提供建议吗?提前致谢
这是答案:I有。。。
sort -n -t| -k2 -k1 < sortexp.txt |awk -F| '$1 < 8000 { a[$2]++ ; print } $1 >= 8000 { if ( !a[$2] && ( !e[$2] || e[$2]<$8 )) {u[$2]=$0;e[$2]=$8;} ; } END { for ( i in u ) print u[i] ;}'