LINUX中如何不經過排序刪除檔案中重複的行(相同行,只保留

2021-07-12 12:05:48 字數 1782 閱讀 7774

1樓:匿名使用者

樓上 uniq必須是連續的重複才行把

用awk肯定行

這是一個cu的精華帖,差不多,對於你的問題你給稍等我修改一下。(ps感謝紅袖添香大姐)

cu精華 經典回顧

#假設我有如下檔案:

#cat aa

#123 def1 456

#345 def2 812

#123 def3 563

#322 def4 684

#123 def5 879

#......................

#現在我想把第一列中欄位相同的合併,第一列不相同的則保留,合併的原則就是保留第一個出現的前兩個欄位,第三個欄位則把結果相加,以上面的示例為例:

##就是對於123開頭的需要合併,合併後應該成為如下:

#cat aa

#123 def1 1898

#345 def2 812

#322 def4 684

#用shell如何實現?

#希望各位幫助,,謝謝,,

#要求總結:

#1 合併相同的第一列資料,並且計算第三列和

#2 第二列只保留第一次出現

#3 第一列順序不變

覺得這個問題很經典,所以從cu論壇轉過來了。

請大家一起學習

我們站在巨人的肩膀上。

問題補充:

看不太懂實現可以講一下思路嗎?

a[$1]+=$3

if(length(b[$1])==0)b[$1]=$2

我是這樣做的

--------------------------2

謝謝你的補充, 已經明白了你對split的適用技巧,是用split(a[$1],tmp)在碰到匹配的$1時取出以前的統計結然後再用$3加上以前的結果是吧,很巧妙。謝謝

但是有2個問題:

1不滿足 第二列保留第一次出現記錄(現在是保留最後一次出現)

2不滿足 第一列按照原來檔案順序出現

看看這個

awk 'being

end' filename

#######################

#######################

#######################

這樣就行了

#,/bin/bash

awk 'begin

end' data

前提是你的資料檔案裡面每行沒有空格,如果有用-f設定一個沒有的字元作分隔符就。

2樓:匿名使用者

cat file_a | uniq > file_b

linux檔案行排序去重結果不同sort和uniq

3樓:匿名使用者

uniq命令的幫助bai:

-u, --unique:only print unique lines

第一個方du法中,你加上-u選項導致zhi了daouniq只輸出唯一存專在的行屬

,有重複的行被過濾掉了

所以,問題出在你的地一種方法上

解決方法:uniq中不適用-u選項

linux中passwd檔案中每一行以:為分隔符,提取出每行的最後一列,排序去重,要求去重後顯示重複欄位的個數

4樓:叉燒帝

# cat /etc/passwd |cut -d':' -f7|sort|uniq -c

如何克服說話做事不經過大腦的毛病

1.話出口前先憋三秒。說話前給自己一個心理暗示,先暫停三秒,再開口說話。三秒鐘足夠給予大腦轉彎和反應的時間,練習久了,十句話中,你可能只會想說出不到五句。2.放慢說話的語速。意識到自己說話不經思考的時候,不要一股腦兒全都說了,儘量放慢語速,從中多爭取一些斟酌思量的時機。3.少說多聽 少迴應多思考。聊...

ecel中如何按日期排序,Excel中如何按日期排序?

1 選中需要按順序排列的區域 2 依次開啟選單欄 資料 排序 這時我們會看到彈出一個 排序 的對話方塊 3 選擇 自定義序列 這裡面我們就可以選擇我們需要排序的型別了,然後確定即 可。4 選擇按照月份排序的型別 5 按照月份排序 很簡單。你選定日期列,點資料,排序,選以當前選定區域排序,升序或者降序...

十二星座中做事情不經過大腦的是哪個星座

第一名 射手座 上榜理由 天生少一根筋的他們常常會忘東西的 出門還會忘了帶鑰匙。第二名 雙子座 上榜理由 因為常常一心多用,有時候不免會有短路的狀況發生。第三名 雙魚座 上榜理由 有名的迷糊蛋,常會陷入自己的想象空間中而完全忽略了顯示的狀況。第四名 白羊座 上榜理由 他們做事情常常會不經過大腦的思考...