行排序linux
㈠ linux文件行排序去重結果不同sort和uniq
騷年,你有仔細觀察者兩個命令嗎?
舉個例子:
文件filea為:
a
b
c
c
d
b
執行sort filea |uniq -u |wc -l,先排序,則刪除了c和b的行;
執行sort -u filea |wc -l,排序,同時刪除相同的行,則只刪除c行。
㈡ linux中如何對一個文本內容進行排序呢
功能說明:將文本文件內容加以排序。
語法:sort [-bcdfimMnr][-o<輸出文件>][-t<分隔字元>][+<起始欄位>-<結束欄位>][--help][--verison][文件]
補充說明:sort可針對文本文件的內容,以行為單位來排序。
參數:
-b 忽略每行前面開始出的空格字元。
-c 檢查文件是否已經按照順序排序。
-d 排序時,處理英文字母、數字及空格字元外,忽略其他的字元。
-f 排序時,將小寫字母視為大寫字母。
-i 排序時,除了040至176之間的ASCII字元外,忽略其他的字元。
-m 將幾個排序好的文件進行合並。
-M 將前面3個字母依照月份的縮寫進行排序。
-n 依照數值的大小排序。
-o<輸出文件> 將排序後的結果存入指定的文件。
-r 以相反的順序來排序。
-t<分隔字元> 指定排序時所用的欄位分隔字元。
+<起始欄位>-<結束欄位> 以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位。
--help 顯示幫助。
--version 顯示版本信息
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面通過幾個例子來講述Sort的使用。
用Sort命令對text文件中各行排序後輸出其結果。請注意,在原文件的第二、三行上的第一個單詞完全相同,該命令將從它們的第二個單詞vegetables與fruit的首字元處繼續進行比較。
$ cat text
vegetable soup
fresh vegetables
fresh fruit
lowfat milk
$ Sort text
fresh fruit
fresh vegetables
lowfat milk
vegetable soup
用戶可以保存排序後的文件內容,或把排序後的文件內容輸出至列印機。下例中用戶把排序後的文件內容保存到名為result的文件中。
$ Sort text>result
以第2個欄位作為排序關鍵字對文件example的內容進行排序。
$ Sort +1-2 example
對於file1和file2文件內容反向排序,結果放在outfile中,利用第2個欄位的第一個字元作為排序關鍵字。
$ Sort -r -o outfile +1.0 -1.1 example
Sort排序常用於在管道中與其他命令連用,組合完成比較復雜的功能,如利用管道將當前工作目錄中的文件送給Sort進行排序,排序關鍵字是第6個至第8個欄位。
$ ls - l | Sort +5 - 7
$ ps -e -o " comm pid time"|Sort -d //按照command的首字母的字母順序排序
Sort命令也可以對標准輸入進行操作。例如,如果您想把幾個文件文本行合並,並對合並後的文本行進行排序,您可以首先用命令cat把多個文件合
並,然後用管道操作把合並後的文本行輸入給命令Sort,Sort命令將輸出這些合並及排序後的文本行。在下面的例子中,文件veglist與文件
fruitlist的文本行經過合並與排序後被保存到文件clist中。
$ cat veglist fruitlist | Sort > clist
㈢ Linux下用SHELL如何排序一個文件中的其中幾行
用sort命令即可,
sort -k3 -k7 文件名
具體是按數字還是字母排序還要加不同的參數
看了這篇文章包你懂
http://www.zhangyan.name/fbtopic.php?fid=28
㈣ 利用Linux命令行進行文本按行去重並按重復次數排序
利用linux命令行進行文本按行去重並按重復次數排序linux命令行提供了非常強大的文本處理功能,組合利用linux命令能實現好多強大的功能。本文這里舉例說明如何利用linux命令行進行文本按行去重並按重復次數排序。主要用到的命令有sort,uniq和cut。其中,sort主要功能是排序,uniq主要功能是實現相鄰文本行的去重,cut可以從文本行中提取相應的文本列(簡單地說,就是按列操作文本行)。用於演示的測試文件內容如下:[plain]Hello
World.
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
The
Iphone
of
Apple
company.
Hello
World.
The
Iphone
of
Apple
company.
My
name
is
Friendfish.
Hello
World.
Apple
and
Nokia.
實現命令及過程如下:[plain]1、文本行去重
(1)排序
由於uniq命令只能對相鄰行進行去重復操作,所以在進行去重前,先要對文本行進行排序,使重復行集中到一起。
$
sort
test.txt
Apple
and
Nokia.
Apple
and
Nokia.
Hello
World.
Hello
World.
Hello
World.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
The
Iphone
of
Apple
company.
(2)去掉相鄰的重復行
$
sort
test.txt
|
uniq
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
2、文本行去重並按重復次數排序
(1)首先,對文本行進行去重並統計重復次數(uniq命令加-c選項可以實現對重復次數進行統計。)。
$
sort
test.txt
|
uniq
-c
2
Apple
and
Nokia.
4
Hello
World.
1
I
wanna
buy
an
Apple
device.
1
My
name
is
Friendfish.
2
The
Iphone
of
Apple
company.
(2)對文本行按重復次數進行排序。
sort
-n可以識別每行開頭的數字,並按其大小對文本行進行排序。默認是按升序排列,如果想要按降序要加-r選項(sort
-rn)。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
4
Hello
World.
2
The
Iphone
of
Apple
company.
2
Apple
and
Nokia.
1
My
name
is
Friendfish.
1
I
wanna
buy
an
Apple
device.
(3)每行前面的刪除重復次數。
cut命令可以按列操作文本行。可以看出前面的重復次數佔8個字元,因此,可以用命令cut
-c
9-
取出每行第9個及其以後的字元。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
|
cut
-c
9-
Hello
World.
The
Iphone
of
Apple
company.
Apple
and
Nokia.
My
name
is
Friendfish.
I
wanna
buy
an
Apple
device.
下面附帶說一下cut命令的使用,用法如下:[plain]cut
-b
list
[-n]
[file
...]
cut
-c
list
[file
...]
cut
-f
list
[-d
delim][-s][file
...]
上面的-b、-c、-f分別表示位元組、字元、欄位(即byte、character、field);
list表示-b、-c、-f操作范圍,-n常常表示具體數字;
file表示的自然是要操作的文本文件的名稱;
delim(英文全寫:delimiter)表示分隔符,默認情況下為TAB;
-s表示不包括那些不含分隔符的行(這樣有利於去掉注釋和標題)
三種方式中,表示從指定的范圍中提取位元組(-b)、或字元(-c)、或欄位(-f)。
范圍的表示方法:
n
只有第n項
n-
從第n項一直到行尾
n-m
從第n項到第m項(包括m)
-m
從一行的開始到第m項(包括m)
-
從一行的開始到結束的所有項
在寫這篇文章的時候,用到了vim的大小寫轉化的快捷鍵:gu變小寫,gU變大寫。結合ctrl+v能夠將一片文字中的字元進行大小寫轉換,非常好用。
㈤ linux shell 如何按照文本每行最後的內容排序
這個排序的規則沒講明白。
「每行最後的內容」是指最後兩個字還是最後三個字?
比如下面兩個的比較:
小雞小雞有限責任公司
小丫小丫的公司
後面兩字同為「公司」,為什麼結果是這個順序?
㈥ linux shell 如何行內排序
hash的效率最高,其他排序都是浮雲。
㈦ 在linux中sort命令如何對指定列進行排序
sort -k 3 yourfile.txt
這種問題查看手冊是最方便了. 你在命令行下運行 man sort 看看它的幫助, 很詳細.
㈧ 簡述有個5kw行的文本文件,linux下shell怎麼按行排序
先用split把大文件分割,比如
split -l 1000000 big.txt
再把分割的小文件排序
sort small1> small_new1
…
最後合並排序
sort -m small_new1 small_new2 > new.txt
㈨ linux怎麼對 138792排序
1. 最常用:直接排序。2. 輸出排序並刪除重復行。3. 按照數值大小進行排序。4. 按照倒序進行排列。5. 高級操作 :按照第幾列進行排序。
由於sort默認是把結果輸出到標准輸出,所以需要用重定向才能將結果寫入文件,形如sort filename > newfile。但是,如果你想把排序結果輸出到原文件中,用重定向可就不行了。
-f會將小寫字母轉換為大寫字母來進行比較,亦即忽略大小寫,-c會檢查文件是否已排好序,如果亂序,則輸出第一個亂序的行的相關信息,最後返回,-C會檢查文件是否已排好序,如果亂序,不輸出內容,僅返回,-M會以月份來排序,比如JAN小於FEB等等-b會忽略每一行前面的所有空白部分,從第一個可見字元開始比較。