shell取出多列文件中某一列重復的數據


文件內容的格式是:

1  張三

2  李四

3  張三

第二列有重復數據,去重的腳本如下:

#!/bin/bash

sort -t\t -k2 File.txt | awk -F'\t' '{
if($2 == VALUE) {}
else if($2 != VALUE)
{
  VALUE = $2;
  print $0;
  }
}' > target.txt

sort -t\t -k1 target.txt > result.txt      

rm target.txt

 

  首先將第二列進行排序: sort -t\t -k2 File.txt

  然后if($2 == VALUE) {}判斷 第一列是否與變量 VALUE相等  (不必要擔心 VALUE變量的值 在初始化時 awk 為 VALUE賦值 為""),如果相等什么多不做。  

  

else if($2 != VALUE)
{
  VALUE = $2;
  print $0;
  }
如果 一列不等於VALUE變量的值將$2賦值為VALUE然后打印這行數據,然后進行下一行 比較 下一行數據與上一行數據的VALUE是否相等相等什么都不敢也就是說

不打印着一行 如果不相等則打印着一行 從而起到去除重復數據的作用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM