Linux下文件操作命令

參考:

http://blog.sina.com.cn/s/blog_6bd7d9430101504l.html


sort 命令:
Linux的sort命令就是一種對文件排序的工具,sort命令的功能十分強大,是Shell腳本編程時常用的文件排序工具;
sort命令與awk一樣,將文件看作記錄和域進行處理,默認的域分隔符是空格符,sort命令的格式爲:
sort [選項] [輸入文件]
選項 意義
-c 測試文件是否已經被排序  complete
-k 指定排序的域   k1  k2nr往後加命令即可
-m 合併兩個已排序的文件   merge
-n 根據數字大小進行排序  number
-o [輸出文件] 將輸出寫到指定的文件,相當於將輸出重定向到指定文件 open
-r 將排序結果逆向    reverse
-t 改變域分隔符   eg:-t:  一般最新定義
-u 去除結果中的重複行     unique -u

uniq 命令
uniq命令用於去除文本文件中的重複行,這類似於sort命令的-u選項
sort -u命令時,所有重複記錄都被去掉
uniq命令去除的重複行必須是連續重複出現的行中間不能夾雜任何其他文本行

選項 意義
-c 打印每行在文本中重複出現的次數   count
-d 只顯示有重複的記錄,每個重複記錄只出現一次  
-u 只顯示沒有重複的記錄   unique

join 命令
join---實現兩個文件中記錄的連接操作連接操作將兩個文件中具有相同域的記錄選擇出來,再將這些記錄所有的域放到一行(包含來自兩個文件的所有域)
join [選項]文件1 文件2
選項 意義
-a1或-a2除了顯示以共同域進行連接的結果外,-a1表示還顯示第1個文件中沒有共同域的記錄,-a2則表示顯示第2個文件中沒有共同域的記錄
-i 比較域內容時,忽略大小寫差異
-o 設置結果顯示的格式
-t 改變域分隔符
-v1或-v2  跟-a選項類似,但是,不顯示以共同域進行連接的結果

-1和-2 -1用於設置文件1用於連接的域,-2用於設置文件2用於連接的域
當兩個文件進行連接時,文件1中的記錄可能在文件2中找不到共同域,反過來,文件2中也可能存這樣的記錄,join命令的結果默認是不顯示這些未進行連接的記錄的
-a和-v選項就是用於顯示這些未進行連接的記錄,-a1和-v1指顯示文件1中的未連接記錄,而-a2和-v2指顯示文件2中的未連接記錄
-a和-v選項的區別在於:-a選項顯示以共同域進行連接的結果,而-v選項則不顯示這些記錄

當兩個文件進行連接時,文件1中的記錄可能在文件2中找不到共同域,反過來,文件2中也可能存在這樣的記錄,join命令的結果默認是不顯示這些未進行連接的記錄的
-a和-v選項就是用於顯示這些未進行連接的記錄,-a1和-v1指顯示文件1中的未連接記錄,而-a2和-v2指顯示文件2中的未連接記錄
-a和-v選項的區別在於:-a選項顯示以共同域進行連接的結果,而-v選項則不顯示這些記錄

join命令默認顯示連接記錄在兩個文件中的所有域,而且是按順序來顯示的。-o選項用於改變結果顯示的格式
join命令默認比較文件1和文件2的第1域,如果我們需要通過其他域進行連接,就需要使用-1和-2選項,-1用於設置文件1用於連接的域,-2用於設置文件2用於連接的域
join -t: -i -1 3 -2 1 TEACHER1.dbTEACHER_HOBBY.db 

cut 命令
cut命令用於從標準輸入或文本文件中按域或行提取文本
選項 意義
-c 指定提取的字符數,或字符範圍   count
-f 指定提取的域數,或域範圍  field
-d 改變域分隔符    
cut -c1-5 TEACHER.db
cut -d: -f1,4 TEACHER.db
cut -d: -f1-3 TEACHER.db

paste 命令
paste命令用於將文本文件或標準輸出中的內容粘貼到新的文件,它可以將來自於不同文件的數據粘貼到一起,形成新的文件
paste  [選項] 文件1文件2
選項 意義
-d 默認域分隔符是空格或Tab鍵,設置新的域分隔符
-s 將每個文件粘貼成一行
- 從標準輸入中讀取數據

paste命令的“-”選項比較特殊,當paste命令從標準輸入中讀取數據時,“-”選項才起作用
eg:[root@jselab shell-book]# ls | paste-d" " - - - - -               #從標準輸入讀取數據
anotherres.sh array_eval2.sh colon.sh example execerr.sh        #每行顯示5個文件名
execin.sh exec.sh FILE1 FILE2 forever.sh
hfile loggg loggg1 loopalias.sh matrix.sh
newfile nokillme.sh part1 part2 part3
parttotal refor.sh reif.sh selfkill.sh sleep10.sh
sleep55.sh stack.sh subsenv.sh subsep.sh subsig.sh
subsparallel.sh subspipe.sh subsvar.sh TEACHER.dbtest.sh
testvar.sh traploop.sh

split 命令
split命令用於將大文件切割成小文件,split命令可以按照文件的行數、字節數切割文件,並能在輸出的多個小文件中自動加上編號
split  [選項] 待切割的大文件輸出的小文件

選項 意義
-或-l 此兩個選項等價,都用於指定切割成小文件的行數
-b 指定切割成小文件的字節
-C 與-b選項類似,但是,切割時儘量維持每行的完整性

tr 命令
tr命令實現字符轉換功能,其功能類似於sed命令,但是,tr命令比sed命令簡單
tr命令能實現的功能,sed命令都可以實現
tr [選項] 字符串1 字符串2<輸入文件
tr命令要麼將輸入文件重定向到標準輸入,要麼從管道讀入數據,記住tr命令的輸入文件之前需要加上“<”符號
選項 意義
-c 選定字符串1中字符集的補集,即反選字符串1中的字符集
-d 刪除字符串1中出現的所有字符
-s 刪除所有重複出現的字符序列,只保留一個

tr命令的-d選項只需跟一個字符串,它表示刪除字符串中出現的所有字符
tr -d A-Z <AREACODE .db
tr命令的-s選項用於刪除所有重複出現的字符序列,只保留一個,即將重複出現的字符串壓縮爲一個字符spress
tr -s "[a-z],[A-Z]" <AREACODE.db
tr命令也可以加上字符串1和字符串2,將字符串1用字符串2來替換
tr "[a-z]" "[A-Z]"<AREACODE
tr命令的-c選項用於選定字符串1中字符集的補集,即反選字符串1中的字符集contract
tr -cs "[a-z][A-Z]" "[\012*]" <AR

tar 命令
tar命令是Linux的歸檔命令tar命令可以將文件或目錄打成一個
tar [選項] 文件名或目錄名
選項 意義
-c 創建新的包  create
-r 爲包添加新的文件  refresh
-t 列出包內容    
-u 更新包中的文件,若包中無此文件,則將該文件添加到包中  
-x 解壓縮文件  
-f 使用壓縮文件或設備,該選項通常是必選的   file
-v 詳細報告tar處理文件的信息   view
-z 用gzip壓縮和解壓縮文件,若加上此選項創建壓縮包,  gzip
那麼解壓縮時也需要加上此選項

-f是必選選項,-c選項用於創建包
tar -cf db.all *.db
-r選項可將文件添加到包
-t選項用於查看包的內容
tar -tf db.all

tar命令的另一重要功能就是解壓縮,以下兩種解壓縮命令足以滿足一般應用要求:
tar -xvf 壓縮包名稱                 #解壓非gzip格式的壓縮包
tar -zxvf 壓縮包名稱                #解壓gzip格式的壓縮包
tar -zxvf db.all.gz
gzip命令是Linux系統中常用的壓縮工具,它可以對tar命令創建的進行壓縮,但是,gzip所生成的壓縮包使用tar -zxvf命令就可解壓縮

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章