新聞中心
每天一個(gè)linux命令(1)sort
sort 是將文件的每一行作為一個(gè)單位,相互比較,比較原則是從首字符向后,依次按照ASCII碼值進(jìn)行比較,默認(rèn)將他們按照升序輸出
公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出項(xiàng)城免費(fèi)做網(wǎng)站回饋大家。
降序
在輸出中去重
將排序結(jié)果輸出到原文件
sort的默認(rèn)輸出是輸出到標(biāo)準(zhǔn)輸出,如果想把結(jié)果輸出到文件,需要 sort file newfile,但是如果想把結(jié)果輸出到原文件這樣就不行了,這時(shí)就需要 使用sort -o
以數(shù)值來排序
sort 默認(rèn)是按照字符串排序的,這樣就會(huì)出現(xiàn)10比3小的情況,sort -n 就可以告訴sort 以整數(shù)排序
-t 后面跟 分隔符
-k 后面跟數(shù)字,表示用第幾列排序
如 sort -t : -k 2 表示把每行 以:號(hào)分割,按照第二列排序
banana:30:5.5
orange:20:3.4
apple:10:2.5
我們可以看到,當(dāng)baidu 和soho都是100的時(shí)候,baidu排在前面,當(dāng)當(dāng)前域按照默認(rèn)規(guī)矩,是從第一個(gè)域開始進(jìn)行升序排序,因此baidu排在了sohu前面。
sort 支持 -k 2 -k3這種模式,如果你需要,你可以繼續(xù)這么寫下去
你仔細(xì)看看,在-k 3后面偷偷加上了一個(gè)小寫字母r,r和-r的作用是一樣,你也可以把前面的-n去掉 在r后面加上n,如下
其實(shí)-k 選項(xiàng) 功能很強(qiáng)大,語法[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
從逗號(hào)前后 分為兩大部分,即-k 2,2,是嚴(yán)格使用第一個(gè)域排序,如果只設(shè)置-k 2 其實(shí)是按照從第一個(gè)域到行尾。逗號(hào)分開的每部分又有一個(gè)點(diǎn)表示子域,即-k 1.2表示 按照第一個(gè)域的第二個(gè)字符排序,Modifiers就是我們用到的n和r 如 -k 1.2nr 具體我們看下面的例子。
我們使用了-k 1.2,這就表示對(duì)第一個(gè)域的第二個(gè)字符開始到本域的最后一個(gè)字符為止的字符串進(jìn)行排序。你會(huì)發(fā)現(xiàn)baidu因?yàn)榈诙€(gè)字母是a而名列榜首。sohu和 google第二個(gè)字符都是o,但sohu的h在google的o前面,所以兩者分別排在第二和第三。這和之前說到的按照默認(rèn)的排序規(guī)則 是不同的,當(dāng)?shù)谝粋€(gè)域的第二個(gè)字符相同時(shí),他不會(huì)去按照第一個(gè)字符排序,而是按照后面的字符排序,這是因?yàn)?k 1.2是對(duì)第一個(gè)域的第二個(gè)字符開始到本域的最后一個(gè)字符為止的字符串進(jìn)行排序。而之前的夸域其實(shí)是一種假象。
-u只識(shí)別用-k設(shè)定的域,發(fā)現(xiàn)相同,就將后續(xù)相同的行都刪除
但是這時(shí)候,卻一行也沒有刪除。原來-u是會(huì)權(quán)衡所有-k選項(xiàng),將都相同的才會(huì)刪除,只要其中有一級(jí)不同都不會(huì)輕易刪除的
可以用到b、d、f、i、n 或 r。
其中n和r你肯定已經(jīng)很熟悉了。
b表示忽略本域的簽到空白符號(hào)。
d表示對(duì)本域按照字典順序排序(即,只考慮空白和字母)。
f表示對(duì)本域忽略大小寫進(jìn)行排序。
i表示忽略“不可打印字符”,只針對(duì)可打印字符進(jìn)行排序。(有些ASCII就是不可打印字符,比如\a是報(bào)警,\b是退格,\n是換行,\r是回車等等)
Linux使用diff命令怎么比較文件
Y:diff命令
●簡(jiǎn)介
★diff命令用于比較文件的差異。
★diff以逐行的方式,比較文本文件的異同處。如果指定要比較目錄,則diff會(huì)比較目錄中相同文件名的文件,但不會(huì)比較其中子目錄。
●語法
★命令格式:diff[參數(shù)][文件1或目錄1][文件2或目錄2]
★參數(shù):
☆-行數(shù) 指定要顯示多少行的文本。此參數(shù)必須與-c或-u參數(shù)一并使用。
☆-a或--text diff預(yù)設(shè)只會(huì)逐行比較文本文件。
☆-b或--ignore-space-change 不檢查空格字符的不同。
☆-B或--ignore-blank-lines 不檢查空白行。
☆-c 顯示全部?jī)?nèi)文,并標(biāo)出不同之處。
☆-C行數(shù)或--context行數(shù) 與執(zhí)行"-c-行數(shù)"指令相同。
☆-d或--minimal 使用不同的演算法,以較小的單位來做比較。
☆-D巨集名稱或ifdef巨集名稱 此參數(shù)的輸出格式可用于前置處理器巨集。
☆-e或--ed 此參數(shù)的輸出格式可用于ed的script文件。
☆-f或-forward-ed 輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處。
☆-H或--speed-large-files 比較大文件時(shí),可加快速度。
☆-l字符或字符串或--ignore-matching-lines字符或字符串 若兩個(gè)文件在某幾行有所不同,而這幾行同時(shí)都包含了選項(xiàng)中指定的字符或字符串,則不顯示這兩個(gè)文件的差異。
☆-i或--ignore-case 不檢查大小寫的不同。
☆-l或--paginate 將結(jié)果交由pr程序來分頁。
☆-n或--rcs 將比較結(jié)果以RCS的格式來顯示。
☆-N或--new-file 在比較目錄時(shí),若文件A僅出現(xiàn)在某個(gè)目錄中,預(yù)設(shè)會(huì)顯示:
☆Only in目錄:文件A若使用-N參數(shù),則diff會(huì)將文件A與一個(gè)空白的文件比較。
☆-p 若比較的文件為C語言的程序碼文件時(shí),顯示差異所在的函數(shù)名稱。
☆-P或--unidirectional-new-file 與-N類似,但只有當(dāng)?shù)诙€(gè)目錄包含了一個(gè)第一個(gè)目錄所沒有的文件時(shí),才會(huì)將這個(gè)文件與空白的文件做比較。
☆-q或--brief 僅顯示有無差異,不顯示詳細(xì)的信息。
☆-r或--recursive 比較子目錄中的文件。
☆-s或--report-identical-files 若沒有發(fā)現(xiàn)任何差異,仍然顯示信息。
☆-S文件或--starting-file文件 在比較目錄時(shí),從指定的文件開始比較。
☆-t或--expand-tabs 在輸出時(shí),將tab字符展開。
☆-T或--initial-tab 在每行前面加上tab字符以便對(duì)齊。
☆-u,-U列數(shù)或--unified=列數(shù) 以合并的方式來顯示文件內(nèi)容的不同。
☆-v或--version 顯示版本信息。
☆-w或--ignore-all-space 忽略全部的空格字符。
☆-W寬度或--width寬度 在使用-y參數(shù)時(shí),指定欄寬。
☆-x文件名或目錄或--exclude文件名或目錄 不比較選項(xiàng)中所指定的文件或目錄。
☆-X文件或--exclude-from文件 您可以將文件或目錄類型存成文本文件,然后在=文件中指定此文本文件。
☆-y或--side-by-side 以并列的方式顯示文件的異同之處。
☆--help 顯示幫助。
☆--left-column 在使用-y參數(shù)時(shí),若兩個(gè)文件某一行內(nèi)容相同,則僅在左側(cè)的欄位顯示該行內(nèi)容。
☆--suppress-common-lines 在使用-y參數(shù)時(shí),僅顯示不同之處。
●案例
★實(shí)例一:比較兩個(gè)文件
[root@localhost test3]# diff log2014.log log2013.log
3c3
2014-03
---
2013-03
8c8
2013-07
---
2013-08
11,12d10
2013-11
2013-12
☆上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行內(nèi)容有所不同;"11,12d10"表示第一個(gè)文件比第二個(gè)文件多了第11和12行。
★實(shí)例二:并排格式輸出
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2014-03 | 2013-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-07 | 2013-08
2013-09 2013-09
2013-10 2013-10
2013-11
2013-12
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2013-03 | 2014-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-08 | 2013-07
2013-09 2013-09
2013-10 2013-10
2013-11
2013-12
★說明:
☆"|"表示前后2個(gè)文件內(nèi)容有不同;
☆""表示后面文件比前面文件少了1行內(nèi)容;
☆""表示后面文件比前面文件多了1行內(nèi)容;
Linux下文件搜索、查找、查看命令
1、最強(qiáng)大的搜索命令:find 查找各種文件的命令
2、在文件資料中查找文件:locate
3、搜索命令所在的目錄及別名信息:which
4、搜索命令所在的目錄及幫助文檔路徑:whereis
5、在文件中搜尋字符串匹配的行并輸出:grep
6、分頁顯示一個(gè)文件或任何輸出結(jié)果:more
7、分頁顯示一個(gè)文件并且可以回頭:less
8、指定顯示前多少行文件內(nèi)容:head
9、指定顯示文件后多少行內(nèi)容:tail
10、查看一個(gè)文件:cat
11、查看文件內(nèi)容多少字符多少行多少字節(jié):wc
12、排序文件內(nèi)容:sort
一、根據(jù) 文件或目錄名稱 搜索
find 【搜索目錄】【-name或者-iname】【搜索字符】:-name和-iname的區(qū)別一個(gè)區(qū)分大小寫,一個(gè)不區(qū)分大小寫
eg:在/etc 目錄下搜索名字為init的文件或目錄
①、find /etc -name init (精準(zhǔn)搜索,名字必須為 init 才能搜索的到)
②、find /etc -iname init (精準(zhǔn)搜索,名字必須為 init或者有字母大寫也能搜索的到)
③、find /etc -name *init (模糊搜索,以 init 結(jié)尾的文件或目錄名)
④、find /etc -name init??? (模糊搜索,? 表示單個(gè)字符,即搜索到 init___)
二、根據(jù) 文件大小 搜索
eg:在根目錄下查找大于 100M 的文件
find / -size +204800
這里 +n 表示大于,-n 表示小于,n 表示等于
1 數(shù)據(jù)塊 == 512 字節(jié) 0.5KB,也就是1KB等于2數(shù)據(jù)塊
100MB == 102400KB204800數(shù)據(jù)塊
三、根據(jù) 所有者和所屬組 搜索
①、在home目錄下查詢所屬組為 root 的文件
find /home -group root
②、在home目錄下查詢所有者為 root 的文件
find /home -user root
四、根據(jù) 時(shí)間屬性 搜索
find 【路徑】【選項(xiàng)】【時(shí)間】
選項(xiàng)有下面三種:-amin 訪問時(shí)間
-cmin 文件屬性被更改
-mmin 文件內(nèi)容被修改
時(shí)間:+n,-n,n分別表示超過n分鐘,n分鐘以內(nèi)和n分鐘
eg:在 /etc 目錄下查找5 分鐘內(nèi)被修改過屬性的文件和目錄
find /etc -cmin -5
五、根據(jù) 文件類型或i節(jié)點(diǎn) 搜索
-type 根據(jù)文件類型查找:
f表示文件,d表示目錄,l表示軟鏈接
eg:查找 /home 目錄下文件類型是目錄的
find /home -type d
-inum 根據(jù)i節(jié)點(diǎn)查找
eg:查找 /tmp 目錄下i節(jié)點(diǎn)為400342的文件或目錄
find /tmp -inum 400342
六、組合條件 搜索
這里有兩個(gè)參數(shù):
①、-a 表示兩個(gè)條件同時(shí)滿足(and)
②、-o 表示兩個(gè)條件滿足任意一個(gè)即可(or)
范例:查找/etc目錄下大于80MB同時(shí)小于100MB的文件
find /etc -size +163840 -a -size -204800
語法:locate【文件名】 -i 不區(qū)分大小寫
注意:這里和 find 命令是有區(qū)別的,find是全盤檢索,而locate 是在文件資料庫中進(jìn)行搜索。所以locate命令的執(zhí)行要比find命令執(zhí)行速度快很多。但是這里有個(gè)問題,文件資料庫是需要不斷更新的。我們新創(chuàng)建的文件如果不更新 文件資料庫,使用 locate 是查找不到的。
updatedb 手動(dòng)更新資料庫,但是對(duì)于/tmp目錄下的新建文件,是更新不到文件資料庫的,因?yàn)?tmp目錄不屬于文件資料庫的收錄范圍。
eg:locate hcf
功能描述:搜索命令所在的目錄及別名信息
語法:which【命令】
eg:which ls
功能描述:搜索命令所在的目錄及幫助文檔路徑
語法:whereis【命令】
eg:whereis ls
功能描述:在文件中搜尋字符串匹配的行并輸出
語法:grep -iv 【指定字符串】【文件】
-i 不區(qū)分大小寫
-v 排除指定字符串
eg:查找 /root/install.log 文件中包含 mysql 字符串的行,并輸出
grep mysql /root/install.log
本搜索工具,根據(jù)用戶指定的模式,對(duì)目標(biāo)文件逐行進(jìn)行匹配檢查,打印匹配到的行
grep是在文件中搜索匹配的字符串,是在文件中進(jìn)行內(nèi)容搜索,這個(gè)命令后面用到的比較多
描述:
分頁顯示一個(gè)文件或任何輸出結(jié)果
用于查看純文本文件(較長(zhǎng)的)格式
格式:
more[選項(xiàng)] 文件
less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動(dòng),卻不能向后移動(dòng),而且 less 在查看之前不會(huì)加載整個(gè)文件。
head[必要參數(shù)][選擇參數(shù)][文件]
用于顯示指定文件開始多少行內(nèi)容
命令參數(shù):
-n 10 顯示前10行
-n -10 正常輸出但不顯示最后的10行
eg:顯示new.txt的前兩行內(nèi)容
head -n 2 new.txt
head -2 new.txt
tail[必要參數(shù)][選擇參數(shù)][文件]
用于顯示指定文件末尾多少行內(nèi)容
命令參數(shù):
-n 10 顯示后面10行
-f 持續(xù)刷新顯示的內(nèi)容
eg:顯示new.txt的末尾兩行內(nèi)容
tail -n 2 new.txt
tail -2 new.txt
eg:指定從第二行開始顯示
tail -n +2 new.txt
描述:一次顯示整個(gè)文件內(nèi)容
cat 命令 用于查看純文本文件(較短)
cat [選項(xiàng)] [文件]…
描述:wc 命令默認(rèn)情況下會(huì)打印換行符數(shù)、單詞數(shù)和字符數(shù)。
用法:wc [選項(xiàng)] [文件]
用法:sort [選項(xiàng)] [文件]
轉(zhuǎn)自: Linux下文件搜索、查找、查看命令_黃小小的博客-CSDN博客_linux 搜索
Linux 基礎(chǔ)教程 11-基本命令diff和comm
diff命令主要用來比較文件的差異。diff會(huì)以逐行的方式比較文本文件的差異,如果指定比較的是目錄,則diff會(huì)比較目錄中相同文件名的文件,但不會(huì)比較其子目錄。
主要參數(shù)如下所示:
second.txt
comm命令主要用于比較兩個(gè) 已經(jīng)排過序 的文件。
主要參數(shù)如下所示:
comm在對(duì)比文件前 一定要先排序 ,否則會(huì)出現(xiàn)報(bào)錯(cuò)提示,以上面diff示例的中的first.txt和second.txt為例
文章名稱:linux比較文件命令,linux比較兩個(gè)文件
分享URL:http://fisionsoft.com.cn/article/dsijhci.html