[英]filter out data from file on the basis of other in awk
我有一個大文件,它有 50 列和 100K 行,由|
分隔|
. 現在$2
(col 2) 有多種類型的$1
(col 1) 值,這意味着 col 2 將重復。 所以我已經對文件進行了排序。 我現在需要根據以下條件提取/過濾結果文件:
$2
具有兩個類型的$1
(的值$1
為$2
超過8000以及小於8000),然后選擇完整的行,其為$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
任何人都可以請教嗎? 提前致謝
這是答案:我得到了...
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] ;}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.