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
linux作業系統中,刪除檔案的命令是什麼
在linux中建立檔案很容易,系統中隨時會有檔案變得過時且毫無用處。使用者可以用rm命令將其刪除。該命令的功能為刪除一個目錄中的一個或多個檔案或目錄,它也可以將某個目錄及其下的所有檔案及子目錄均刪除。對於連結檔案,只是刪除了連結,原有檔案均保持不變。rm命令的一般形式為 rm 選項 檔案 如果沒有使...
中,如何批量刪除某重複字元之前的內容
有一個減少工作的辦法,但不是很完美,樓主可以根據自己文章的特點,按照此思路擴充套件一下。使用替換的工具,快捷鍵ctrl h,只是要使用萬用字元 問號。文章中有太多的 img src 使用萬用字元問號?需要幾個?問號,和img前面的有幾個字元有關係。本例子中第一個img前面有8個字元,使用8個萬用字元...
在excel中如何篩選出姓名重複的並刪除
把姓名列排序,同樣的姓名就在一起了. 大徐哥 假設客戶姓名在a列,b1輸入公式 if countif a a,a1 1,重複 將b1公式向下複製,b列中姓名重複的都會判斷出來 姓名在a列 b2 index a a,small if a 2 a 500 match a 2 a 500 a 2 a 50...