1. 程式人生 > >linux排序去重比較

linux排序去重比較

sort  :將文字檔案內容加以排序。

sort -u [file]  =  sort [file] | uniq (去重)

引數說明

-b 忽略每行前面開始出的空格字元

-c 檢查檔案是否已經按照順序排序

-d 排序時,處理英文字母、數字及空格字元外,忽略其他的字元

-f  排序時,將小寫字母視為大寫字母

-l  排序時,除了040至176之間的ASCII字元外,忽略其他的字元

-m 將幾個排序好的檔案進行合併

-M 將前面3個字元依照月份的縮寫進行排序

-n 依照數值的大小排序

-o<輸出檔案> 講排序後的結果存入指定的檔案

-r 以相反的順序來排序

-t<分隔字元> 指定排序時所用的欄位分割字元

+<起始欄位>-<結束欄位> 以指定的欄位來排序,範圍由起始蘭位到結束欄位的前一欄位

--help 顯示幫助

--version 顯示版本資訊

-u 對排序後認為相同的行只留其中一行

uniq : 檢查及刪除文字檔案中重複出現的行列。

語法:uniq[選項] 檔案

最重要引數:  預設(去重)  |  -d(顯重)   |   -u(刪重)

引數

-c或--count 在每列旁邊顯示該行重複出現的次數

-d或--repeat 僅顯示重複出現的行列

-f<欄位>或--skip-fields=<欄位> 忽略比較指定的欄位

-s<字元位置>或--skip-chars=<字元位置> 忽略比較指定的字元

-u或--unique 僅顯示出一次的行列

-w<字元位置>或--check-chars<字元位置> 指定要比較的字元

--help 幫助資訊

--version 版本資訊

comm  命令詳解:

功能說明:比較兩個已排序的檔案

語法: comm [-123][--help][--version][第一個檔案][第二個檔案]

補充說明:這項指令會一列列的比較兩個已排序檔案的差異,並將其結果顯示出來。如果沒有指定任何引數,則會把結果分成3行顯示,第1行是僅在第一個檔案中出現的列,第2行是僅在第二個檔案中出現過的列,第3行則是在兩個檔案中都出現過的列。若給予的檔名稱是"-",則comm指令會從標準輸入裝置中讀取資料。

引數

-1 不顯示在第1個檔案中出現的列

-2 不顯示在第2個檔案中出現的列

-3 不顯示只在第1或第2個檔案中出現的列

選項1 2和3抑制相應的列顯示,例如

comm -12 顯示兩個檔案中都出現的行

comm -23 顯示在第1個檔案出現,而不是在第2個檔案出現的行

comm -123 什麼都不顯示

注意uniq  和  comm 命令需要使用已經排序好的內容才有意義。注意檔案格式要為unix

一些例子:

第一:兩個檔案的交集,並集

前提條件:兩個檔案不得有重複的行(即兩個檔案都要去重)

1. 取出兩個檔案的並集 cat file1 file2 | sort | uniq >file3

2. 取出兩個檔案的交集 cat file1 file2 | sort | uniq -d >file3

3. 刪除交集 cat file1 file2 | sort |uniq -u <file3

第二:兩個檔案合併

1. 一個在上一個在下 cat file1 files2 >file3

2. 一個在左一個在右 paste file1 file2 >file3

3. cat file1 >> file2

第三:一個檔案去掉重複行

1.  sort file | uniq 把重複的行合併為一行

2.  sort file | uniq -u 把重複的行刪除,僅保留非重複的行


相關推薦

linux排序比較

sort  :將文字檔案內容加以排序。 sort -u [file]  =  sort [file] | uniq (去重) 引數說明 -b 忽略每行前面開始出的空格字元 -c 檢查檔案是否已經按照順序排序 -d 排序時,處理英文字母、數字及空格字元外,忽略其他的字元

linux 切檔案命令 分割排序指令

https://blog.csdn.net/pzasdq/article/details/52830098 split kws.txt -l 1000 -d -a 2 url_&&ls|grep kws_|xargs -n1 -i{} mv {} {}.txt  -

TreeSet集合的一個比較排序案例

Student基礎資訊 package TreeSetDemo; public class Student implements Comparable<Student>{ /

Linux命令統計排序(awk命令,sort, uniq命令統計)

awk命令去重,sort, uniq命令去重統計 利用Linux命令列進行文字按行去重並按重複次數排序 linux命令列提供了非常強大的文字處理功能,組合利用linux命令能實現好多強大的功能。本文這裡舉例說明如何利用Linux命令列進行文字按行去重並按

處理文本文件及其排序

處理文本文件及其排序去重cat file1.txt file2.txt >file3.txtsort file3.txt | uniq >newfile.txtnewfile即為去重後的文件本文出自 “simeon技術專欄” 博客,請務必保留此出處http://simeon.blog.51cto.

每日一shell(九)yum安裝包排序

yum awk shell sed 現在有一堆的yum安裝包需要安裝,於是就想使用批量安裝,合並後的安裝包有重復的,於是決定先去重源安裝包如下: python-devel python-imaging zip unzip openssl openssl-devel gcc libxml2 li

ALGO-39_藍橋杯_算法訓練_數組排序

define for stdio.h main 描述 AR 訓練 組成 思路 問題描述   輸入10個整數組成的序列,要求對其進行升序排序,並去掉重復元素。 輸入格式   10個整數。 輸出格式   多行輸出,每行一個元素。 樣例輸入 2 2 3 3 1 1 5 5 5

簡單排序 掌握了幾個STL容器

http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2378   vector   先排序 再去重unique #include <iostr

oracle的多欄位排序Row Number Over Partition By A B Order By C

                今天遇到需要在多條有重複欄位的記錄中選取修改日期最接近現在的欄位,如下:我想要選取CPDM,FBQD相同,KSRQ離現在最近的那條記錄,選出的記錄應該為1、2、3,而4、5、6、7應該捨棄掉。我們使用這條語句:Row_Number() Over(Partition By Cpd

陣列不改變原順序(非排序

演算法的虛擬碼描述: QuChong: 1.初始化標誌陣列flag為1; 2.i從0到n遞增 2.1 j從i+1到n遞增 2.1.1 如a[i]等於a[j],標誌組置為0; 3.i從0到n遞增 3.1若flag[i]非0,將a[i]賦給a[t],t++; 4.刪除

氣泡排序和氣泡排序

氣泡排序 氣泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法。 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。 這個演

藍橋杯 ALGO-39 演算法訓練 陣列排序

演算法訓練 陣列排序去重   時間限制:1.0s   記憶體限制:512.0MB        問題描述   輸入10個整陣列成的序列,要求對其進行升序排序,並去掉重複元素。 輸入格式   1

Algo-39 陣列排序

演算法訓練 陣列排序去重   時間限制:1.0s   記憶體限制:512.0MB         問題描述

EOJ(排序)——2844. 排序

2844. 排序去重 有 n 個 1 到 1000 之間的整數 (1≤n≤100),對於其中重複的數字,只保留一個,把其餘相同的數去掉。然後再按照指定的排序方式把這些數排序。 輸入 第 1 行為字母 A 或 D,A 表示按照升序排序,D 表示按照降序排序。 第 2 行開始有若

[Java] 藍橋杯ALGO-39 演算法訓練 陣列排序

問題描述輸入10個整陣列成的序列,要求對其進行升序排序,並去掉重複元素。輸入格式10個整數。輸出格式多行輸出,每行一個元素。樣例輸入2 2 3 3 1 1 5 5 5 5樣例輸出1235 packag

shell指令碼不排序

一條命令搞定: awk '!a[$0]++' file 如果是第一次出現a[$0]++的值為0(假),而!a[$0]++的值就為1(真),之後就執行print $0 第二次或者兩次以上的出現a[$0]++的值就為大於0的整數值(真),例如1,2,3...,而!a[$0]++的值就為0(假),之

linux sh 的幾種方法例項

測試檔案 複製程式碼 程式碼如下: [[email protected] ~]# cat >test jason jason jason fffff jason 按 Ctr + D儲存 1、sort -u 複製程式碼 程式碼如

JAVA陣列和JavaScript陣列比較

JS的直覺方案: 對於陣列去重,只要寫過程式的,立刻就能得到第一個解法: function unique(arr) { var ret = [] for (var i = 0; i < arr.length; i++) {

MySQL自定義排序

 MySQL表中有多個使用者,每個使用者有他的成績,一個使用者可能有多個不同的成績,    查詢結果成績由高到低排列,有多個成績的使用者,只取他的最高分。 [sql] view plain copy  print? select * fromus

【dfs+dp+桶排序】洛谷P1441 砝碼稱

大致思路:首先看一下這道題:https://blog.csdn.net/m0_38033475/article/details/80380467你對比一下會發現,都是求“方案數”的,其實都是用“01揹包”來做的:對本題來說,f[j]的值表示重量為j時的方案數(每個方案的重量和