Linux文本過濾常用命令(轉)


01 cat命令

 通常用來顯示文本文件的內容

 一般用來查看比較短的文本文件,因為其緩沖區有限

-s選項可以用來合並文件中多余的空行,多個空行將被壓縮為一個空行;

-n選項可以顯示行號

-b選項可以跳過空行的編號,顯示非空行的行號;

cat不加任何參數可以用來賦值標准輸入到標准輸出;

02 more命令

可以用來分屏查看文本文件的內容

當文件的內容查過一屏時可以分屏查看,最后一行會顯示more的提示顯示;

回車鍵會向后滾動一行,空格滾動一屏;

在more中還支持搜索功能,與vim中的搜索用法一致;

按q鍵自動退出more

可以在某些命令后加管道符號和more命令,可以對命令的結果分屏顯示;

03 less命令

用於分屏顯示文本文件內容

相對與more命令less功能更加強大

回車鍵會向后滾動一行,空格滾動一屏;

還可以用上下左右鍵查看,more不能回滾;

同樣支持搜索操作

more顯示完文件內容后會自動退出;less不會,需要使用q鍵

在查看的過程中還可以調用其他shell指令,同vim的底行模式

04 grep命令

是一種長匹配指令,可以匹配我們輸入的文本,並在文件中搜索含有匹配的行

# grep "root" /ets/passwd

匹配模式中支持正則表達式

# grep -n "fs$" /proc/filesystem    //搜索以fs結尾的行

05 head命令

用於顯示文件的頭部內容,默認顯示文件前10行內容

# head /etc/httpd/conf/httpd.conf

-n選項可以指定顯示的行數

對於顯示一些超大型文件的頭部內容很重要

可以顯示多個文件的頭部內容

06 tail命令

用來顯示給定文本文件的尾部內容,默認顯示尾部10行內容

# tail filename

-n選項可以指定顯示內容的行數

-f可以動態跟隨文件尾部的變化,經常用該選項監控系統的日志文件; 

07 wc命令

用於統計文本文件中的行數,單詞數和字節數;

# wc /etc/passwd

        44 72 2102 /etc/passwd

# wc -l /etc/passwd    //單獨統計文件的行數

# ps -ef |grep gnome |wc -l    //統計當前系統有多少個含有gnome進程

# wc

然后輸入一部分內容,按Ctrl+d時會統計我們剛輸入的文字信息

08 uniq命令

用於過濾文件中的重復行,並沒有改變文件內容

要求要過濾的文本是已經排序過的

首先使用sort命令排序,然后再使用uniq命令#sort file | uniq

-c選項可以統計重復行出現的次數 

09 cut命令

用於顯示文本文件中指定的列

# cut -f 1 -d " " /etc/fstab    //以空格為分割,顯示第1部分

# cut -c -15 /proc/net/arp    //顯示每列前面的15個字符即IP地址

10 sort命令

用來對文本排序

# sort file

僅僅將file中的內容排序輸出,並沒有改變file的內容

-o選項可以輸出到指定的文件

# sort file -o result

也可以使用重定向的功能把排序結果保存到文件中

11 join命令

用於合並給定文件中的相同字段,要求文件是被排序過的

# cat math

Tom    90

Jim    91

# cat english

Jim    95

Tom    96

# sort math > math.sorted

# sort english > english.sorted

# join math.sorted english.sorted

Jim    91    95

Tom    90    96

12 split命令

用於將給定的文件分割成若干個小的文件

# split acess_log

會生成很多小文件,每個文件默認是1000行

-l選項可以指定分割的文件大小的行數

13 unexpand命令

用於將文件中多余的空格字符轉換成制表符

# cat test.txt

liuli                        zhangsan

# unexpand -t 10 test.txt

liuli    zhangsan

-t將指定個數的空白轉換成一個Tab鍵

14 tr命令

是字符處理工具,用於替換和刪除給定文本中的單個字符,不是字符串處理工具

# tr dev xyz < /etc/fstab    //將d替換為x,將e替換為y,v替換為z

sed命令可以替換字符串

# tr a-z A-Z < /etc/hosts    //將小寫字符替換為大寫字符

# tr -d angi < "zhangsanlisiwangwu"        //將angi對應的字符刪除

zhslswwu

# echo $PATH

/opt/arm-2009q3/bin:/usr/lib/qt4/bin:/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/beangr/bin

# echo $PATH | tr ":" "\n"    //將結果中的:替換為換行符

/opt/arm-2009q3/bin

/usr/lib/qt4/bin:/usr/lib/qt-3.3/bin

/usr/local/bin

/usr/bin

/bin

/usr/local/sbin

/usr/sbin

/sbin

/home/beangr/bin

15 tee命令

用於從標准輸入讀取數據,將其保存到指定的文件並輸出到標准輸出

# cat /etc/fstab | tee file1 file2 file3

/* 正常輸出到標准輸出的同時保存到file1,file2,file3 */

16 tac命令

用於以行為單位,反序顯示文本的內容

tac是cat的反指令

17 spell命令

是Linux中拼寫檢查命令,可以對文件中的文本以單詞為單位進行拼寫檢查,並將拼寫錯誤的單詞打印出來

# spell file

18 paste命令

用於多個文本文件的合並,以列為單位

# cat t1.txt

name    math    java

Tom        100        70

jim        80        88

# cat t2.txt

C++

90

89

# paste t1.txt t2.txt

name    math    java    C++

Tom        100        70        90

jim        80        88        89

如果需要將結果保存到文件,需要使用重定向

19 diff命令

用於比較兩個文件不同的地方

# diff file1 file2

diff命令常用來生成補丁文件

# diff -Nur file1 file2 >a.patch

20 cmp命令

用於比較兩個文件的類型,可以是任何類型的文件

會顯示出從哪個地方開始不同

# cmp file1 file2

# cmp /bin/ls /bin/mail

# cmp file1 file1    //比較兩個相同的文件,沒有輸出

21 look命令

用於顯示文件中以指定字符串開頭的行,要求文本文件是有序的

# cat t1.txt

name    math    java

zhang    100        70

lisi    70        88

wang    100        70

zhang    100        70

# sort t1.txt > t1.txt.sorted

# look zhang t1.txt

zhang    100    70

# look zhang t1.txt.sorted

zhang    100    70

zhang    100    70

# look hello    //可以查詢我們的字典,會顯示所有包含hello的單詞

在安裝look命令的時候,會安裝兩個字典文件

22 ispell命令

可以檢查文件中英文拼寫錯誤,並給出糾正提示

# cat test.txt

yyear    month    hppy

# ispell test.txt //修改的結果會保存到文件

23 fold命令

用於控制文件內容在顯示的時候占用屏幕的寬度

# fold -w 20 /etc/fstab    //指定寬度為20個字符

換行的內容不表示文本是多行,只是多行顯示而已

24 fmt命令

用於對文本文件的內容進行文本格式的優化

# fmt -u /etc/fstab    //會壓縮顯示的空格

25 expand命令

用於將文件中的制表符轉換為空格字符

# cat t1.txt

hello    world

hello        Linux

# expand -t 20 t1.txt

hello                    world

hello                                        Linux

與unexpand互逆

26 col命令

用來過濾其他指令輸出的控制信息

# cat mytest | col > mytest3

27 colm命令

用於刪除文件中指定的列(字符為單位)

# colm 20 < /etc/fstab        //刪除前20列字符

原有內容不會發生改變

# colm 20 50 < /etc/fstab    //刪除20到50之間的列

28 comm命令

用於比較已經排序的文件,比較以行為單位

# cat chengji1

wangwu    90

lisi    60

zhangsan    80

# cat chengji2

wangwu    90

zhangsan    80

lisi    70

# sort chengji1 > chengji1-1

# sort chengji2 > chengji2-2

# comm chengji1-1 chengji2-2

29 csplit命令

用於將一個大文件分割為小的文件,以行為單位

# csplit test.txt 300

/* 從300行處分割成兩個文件 */

30 diff3命令

用於比較3個文件的不同,並顯示他們的不同地方

# diff3 file1 file2 file3

31 diffstat命令

用於統計diff指令的輸出結果

# diff a.patch

32 printf命令

用於格式化並輸出結果到標准輸出,非常類似於C語言中的printf函數

# printf "%s\t%s\n" "Hello" "world"

Hello world

33 pr命令

用於將文本文件轉換成適合打印的文件,可以將文件分成多頁並添加打印標題

# pr test.txt > test.txt.print

34 od命令

用於輸出文件的八進制,十六進制或其他格式編碼的字節,通常用來顯示不能直接在終端顯示的字符

# od -tcx1 test.txt

# cat test.txt

hello world

35 rev命令

用於對文件的文本內容以行為單位進行字符的反序輸出

# cat test.txt

hello world

I love linux!

# rev test.txt

dlrow olleh

!xunil evol I

 

參考:

http://blog.csdn.net/halazi100/article/details/42266885(以上內容轉自此篇文章)

http://blog.csdn.net/hzylmf/article/details/13712753

http://blog.csdn.net/u011068702/article/details/60882902


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM