文件內容的格式是:
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是否相等相等什么都不敢也就是說
不打印着一行 如果不相等則打印着一行 從而起到去除重復數據的作用
