shell學習筆記之uniq join cut

2022-03-08 03:58:15 字數 2151 閱讀 8763

uniq

uniq用來從乙個文字檔案中刪除或者禁止重複行,一般uniq假定檔案已經分類,並且結果正確。

sort中的唯一性選項去除所有重複行,而uniq命令並不是這樣。在uniq中,重複行是不斷重複出現的行,中間不夾雜任何文字內容,如:

1 may day

2 may day

3 may day

4 going down

5 may day

6 may day.

7 may day

uniq將前三行看作是重複行,第四行是不同文字,所以第五行的may day將被保留。uniq命令的格式為:

$ uniq -u d c -f input_file out_file

各個選項的含義:

-u : 只顯示不重複行

-d : 只顯示有重複資料行,每種重複行只顯示其中一行

-c : 列印每個重複行出現的次數

-f : n為數字,前n個域被忽略,有些系統並不識別-f,這時替代使用-n。

使用-n只測試一行一部分的唯一性。注意:域從1開始計數。

1 ak123 33

46 6u opp ty yu

2 dk122 5h 67 y8 opp ty yu

3 ek999 56

5678 iiy ty yu

從第五個域開始比較:

1 $ uniq -f4 -c parts.txt 

22 ak123 33

46 6u opp ty yu

31 ek999 56

5678 iiy ty yu

uniq在讀取行時,會對它們進行比較並將只除去兩個或更多的連續行。

join

join用來將兩個分類文字檔案的行連在一起。假設有兩個檔案file1和file2,當然已經分類,每個檔案中都有一些元素與另乙個檔案相連,由於這種關係,join將兩個檔案合併在一起。

為了有效使用join,需分別將輸入檔案分類。

其命令格式為:

1

join [options] input-file1 input-file2

選項:an : 表示連線時顯示第n個檔案不匹配行。

o n.m : n表示檔案號,m表示域號。

t : 分隔符

j n.m o.p 表示連線的字段引數。

預設j o i n刪除或去除連線鍵的第二次重複出現,這裡即為名字域。

cutcut用來從標準輸入或者文字檔案中剪下列或者域。剪下文字可以粘帖到乙個文字檔案中。

格式為:

1 cut [options] file1 file2

選項:-c list 指定剪下字元數。

-f field 指定剪下域數。

-d 指定與空格和t a b鍵不同的域分隔符。

- c用來指定剪下範圍,如下所示:

- c 1,5-7 剪下第1個字元,然後是第5到第7個字元。

-c1-50 剪下前5 0個字元。

-f 格式與- c相同,剪下域。

-f 1,5 剪下第1域,第5域。

- f 1,10-12 剪下第1域,第1 0域到第1 2域

paste

c u t用來從文字檔案或標準輸出中抽取資料列或者域,然後再用p a s t e可以將這些資料貼上起來形成相關檔案。貼上兩個不同**的資料時,首先需將其分類,並確保兩個檔案行數相同。

p a s t e將按行將不同檔案行資訊放在一行。預設情況下, p a s t e連線時,用空格或t a b鍵分隔新行中不同文字,除非指定- d選項,它將成為域分隔符。

p a s t e格式為;

1 paste -d -s -file1 file2

選項含義如下:

-d 指定不同於空格或t a b鍵的域分隔符。例如用@分隔域,使用- d @。

-s 將每個檔案合併成行而不是按行貼上。

- 使用標準輸入。例如ls -l |paste ,意即只在一列上顯示輸出。

split

split將大檔案分割成小檔案。

命令格式:

1

split -output_file-size input-filename output-filename

shell學習筆記之if引數

b 當file存在並且是塊檔案時返回真 c 當file存在並且是字元檔案時返回真 d 當pathname存在並且是乙個目錄時返回真 e 當pathname指定的檔案或目錄存在時返回真 f 當file存在並且是正規檔案時返回真 g 當由pathname指定的檔案或目錄存在並且設定了sgid位時返回為真...

shell學習筆記之八(函式)

函式 定義 1 無返回值 function為關鍵字,function name為函式名 function function name 省略關鍵字function,效果一樣 function name 例 1 簡單函式宣告和呼叫 bin bash function sayhello sayhello ...

shell學習筆記之條件(二)

test或者 檢查檔案是否存在 if test f read.c then fi if f read.c then fi 如果then和if在同一行上,就應該用 把if和then分開 if f read.c then fi 注意 1.if空格 空格 空格 都有空格 2.test命令的退出碼 表明條件...