簡體   English   中英

基於awk中的其他過濾掉文件中的數據

[英]filter out data from file on the basis of other in awk

我有一個大文件,它有 50 列和 100K 行,由|分隔| . 現在$2 (col 2) 有多種類型的$1 (col 1) 值,這意味着 col 2 將重復。 所以我已經對文件進行了排序。 我現在需要根據以下條件提取/過濾結果文件:

  • 條件1:當$2具有兩個類型的$1 (的值$1$2超過8000以及小於8000),然后選擇完整的行,其為$1 8000 <對於給定的$2
  • 條件 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM