文本處理工具

1、cat命令

功能:

顯示文本內容,連接合并文本內容并在標準設備上輸出

語法:

cat [OPTION]... [FILE]...

選項:

-E:顯示行結束符(回車)$
-A:顯示所有控制符,相當于-vET
-n:對顯示出的每一行進行編號
-b:對非空白行編號
-s:將連續的空行壓縮成一行
-T:把TAB字符顯示為^I
-v:除了 LFD 和 TAB 之外所有控制符用 ^ 和 M- 記方式顯示

示例:

查看/etc/issue文件內容
[root@localhost ~]# cat /etc/issue
\S
Kernel \r on an \m
將/etc/issue文件和/etc/hostname文件合并為issname
[root@localhost ~]# cat /etc/hostname /etc/issue > issname
[root@localhost ~]# cat issname
localhost.localdomain
\S
Kernel \r on an \m

2、tac命令

功能:

逆向連接或打印文本內容到標準輸出設備上

語法:

tac [OPTION]... [FILE]...

選項:

-a:將內容追加到文件的末尾
-i:忽略中斷信號

示例:

用tac命令顯示/etc/issue文件內容
[root@localhost ~]# tac /etc/issue

Kernel \r on an \m
\S

3、rev命令

功能:

將文件中的每行內容以字符為單位反序輸出,即第一個字符最后輸出,最后一個字符最先輸出

語法:

rev [options] [file ...]

示例:

用rev命令顯示/etc/issue文件內容
[root@localhost ~]# rev issname 
niamodlacol.tsohlacol
S\
m\ na no r\ lenreK

4、more命令

功能:

用于分頁顯示 (一次一屏) 文本(無法往首部翻屏)

語法:

more [options] file [...]

選項:

-m:指定每屏顯示的行數(整數)
-d:顯示翻頁和退出提示
-s:多個空行壓縮成一行顯示
-u:禁止下劃線
+num:指定每屏顯示的行數

說明:

space鍵:顯示文本的下一屏
回車鍵:顯示文本的下一行
/ :輸入一個模式,可以在文本中找下一個相匹配的模式(正則表達式)
H鍵:顯示幫助
B鍵:顯示上一屏
Q鍵:退出

示例:

使用more命令顯示/etc/passwd文件內容
[root@localhost ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

5、less命令

功能:

顯示文檔內容,可以上下翻頁(用PageUp鍵向上翻頁,用PageDown鍵向下翻頁)

語法:

more [options] file

選項:

-N:顯示行號
-l:搜索時忽略大小寫
-s:將連續的空行壓縮成一行顯示

說明:

/字符串:向下搜索“字符串”
?字符串:向上所屬“字符串”
n:向下搜索(重復前一個搜索)
N:向上搜索(逆向重復前一個搜索)
b鍵:向后翻一頁
d鍵:向后翻半頁
h鍵:顯示幫助
q鍵:退出
u鍵:向前滾動半頁
回車鍵:向下滾動一行
空格鍵:向下滾動一頁

示例:

[root@localhost ~]# less -N /etc/passwd
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin

6、head命令

功能:

顯示文件的開頭部分(默認顯示10行)

語法:

head [OPTION]... [FILE]...

選項:

-c #:指定顯示頭部內容的#個字符
-n #:指定顯示頭部內容的#行

示例:

顯示/etc/passwd文件的前5行
[root@localhost ~]# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

7、tail命令

功能:

顯示文件尾部部分(默認顯示后10行)

語法:

tail [OPTION]... [FILE]...

選項:

-c #:指定顯示尾部內容的#個字符
-n #:指定顯示尾部內容的#行

示例:

顯示/etc/passwd文件的最后5個字符
[root@localhost ~]# tail -c 5 /etc/passwd
bash (看到的只有4個字符,其實最后面還隱藏了一個結束符$,用cat -A查看)

8、cut命令

功能:

顯示文件的指定部分,按列抽取

語法:

cut OPTION... [FILE]...

選項;

-b:僅顯示行中指定直接范圍的內容
-c:僅顯示行中指定范圍的字符
-d:指定字段的分隔符,默認tab
-f:指定字段并顯示內容(#、#,#、#-#)
-n:與“-b”選項連用,不分割多個字節字符
--out-delimiter=string:指定string為字段分隔符

示例:

[root@localhost ~]# cut -d : -f 4 /etc/passwd

9、paste命令

功能:

合并兩個文件同行號的列到一行

語法: paste [OPTION]… [FILE]…

選項:

-d:指定分隔符,默認tab
-s:將一個文件的所有行合成一行顯示

示例:

[root@localhost ~]# paste -s /etc/issue
\S  Kernel \r on an \m

10、wc命令

功能:

統計打印文件的行數、單詞數、字符數

語法:

wc [OPTION]... [FILE]...

選項:

-l:統計行數
-w:統計單詞數(連續不斷的字符組合)
-c:統計字節數
-m:統計字符數

示例:

[root@localhost ~]# wc /etc/hostname 
 1           1           22     /etc/hostname
(行數) (單詞數)    (字符數)

11、sort命令

功能:

文本排序

語法:

sort [OPTION]... [FILE]...

選項:

-r:逆向排序
-n:由大到小排序
-f:忽略字符大小寫
-u:刪除輸出中的重復行
-b:忽略行首的空格字符
-t:指定字段分隔符
-k #:按照指定的分隔符來指定#列的內容來整理

示例:

[root@localhost ~]# sort num
1
2
2
3
[root@localhost ~]# sort -r num
3
2
2
1

12、uniq命令

功能:

忽略重復的行,常與sort命令連用

語法:

uniq [OPTION]... [INPUT [OUTPUT]]

選項:

-c:顯示每行重復出現的次數(連續且完全相同方為重復)
-d:僅顯示重復的行
-u:僅顯示不重復的行

示例:

[root@localhost ~]# sort num | uniq -c
1
2
3

13、diff命令

功能:

比較文件間的區別

語法:

diff [OPTION]... FILES

選項:

-b:忽略一行當中多個空白的區別(about me與about    me 視為相同)
-B:忽略空白行
-i:忽略大小寫
-u:以統一的格式輸出,適用于補丁文件

示例:

[root@localhost ~]# cat num
1
2
3
[root@localhost ~]# cat num1
1
2
2
3
[root@localhost ~]# diff num num1
2a3
> 2

14、patch命令

功能:

apply changes to files,打補丁

選項:

-b :自動備份改變了的文件
-p #:后面的#表示取消幾層目錄
-E:將新的文件還原成原來舊的版本

15、grep命令

功能:

文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行。(模式:由正則表達式字符及文本字符所編寫的過濾條件)

語法:

grep [OPTIONS] PATTERN [FILE...]

選項:

--color=atuo:對匹配到的文本著色顯示
-v:顯示不能夠被模式匹配的行
-i:忽略字符的大小寫
-n:顯示匹配到的內容的行號
-c:統計匹配到的行數
-o:僅顯示匹配到的字符串
-q:靜默模式,不輸出任何信息
-e:實現多個選項鍵的邏輯or關系(grep -e hi -e hello file)
-w:單詞(字符組合)匹配
-A #:顯示匹配到的模式的后#行
-B #:顯示匹配到的模式的前#行
-C #:顯示匹配到的模式的前后各#行
-E:使用擴展正則表達式

示例:

[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

16、正則表達式

(1)正則表達式是一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能。分為基本正則表示式和擴展正則表達式。元字符分類:字符匹配、次數匹配、位置錨定、分組。

(2)基本真正表達式元字符

1)字符匹配
?.:表示匹配任意單個字符
?[]:匹配指定范圍內的任意單個字符
?[^]:匹配指定范圍外的任意單個字符
?[:alpha:]:所有大小寫字母
?[:alnum:]:所有字母和數字
?[:upper:]:所有大寫字母
?[:lower:]:所有小寫字母
?[:digit:]:所有數字
?[:punct:]:所有表達符號
?[:space:]:所有空白字符(包括空格和tab鍵)

2)次數匹配
?*:匹配前面的字符任意次,包括0次,(貪婪模式)
?.*:任意長度的任意字符
?\?:匹配其前面的字符0或1次
?\+:匹配其前面的字符至少1次
?\{n\}:匹配其前面字符n次
?\{m,n\}:匹配其前面字符最少m次,最多n次
?\{,n\}:匹配其前面字符最少0次,最多n次
?\{m,\}:匹配其前面字符最少m次

3)位置錨定
?^:行首錨定,用于模式的最左側
?$:行位錨定,用于模式的最右側
?^PATTERN$:用于模式匹配整行
?^$:空行
?^[[:space:]]*$:空白行(包括空行和tab)
?\<或\b:詞首錨定,用于單詞模式的左側
?\>或\b:詞尾錨定,用于單詞模式的右側
?\<WORD\>:匹配整個單詞

4)分組
\(\):將一個或多字符捆綁在一起,當作一個整體進行處理。
分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命令方式為:\1、\2 ... 
\1:從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符

    實例: \(string1\+\(string2\)*\)
    \1: string1\+\(string2\)*
    \2: string2
后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身)

(3)egrep及擴展的正則表達式元字符(與基本正則表達式基本相同)

1)字符匹配
?.:表示匹配任意單個字符
?[]:匹配指定范圍內的任意單個字符
?[^]:匹配指定范圍外的任意單個字符
?[:alpha:]:所有大小寫字母
?[:alnum:]:所有字母和數字
?[:upper:]:所有大寫字母
?[:lower:]:所有小寫字母
?[:digit:]:所有數字
?[:punct:]:所有表達符號
?[:space:]:所有空白字符(包括空格和tab鍵)

2)次數匹配
?*:匹配前面的字符任意次,包括0次,(貪婪模式)
?.*:任意長度的任意字符
??:匹配其前面的字符0或1次
?+:匹配其前面的字符至少1次
?{n}:匹配其前面字符n次
?{m,n}:匹配其前面字符最少m次,最多n次
?{,n}:匹配其前面字符最少0次,最多n次
?{m,}:匹配其前面字符最少m次

3)位置錨定
?^:行首錨定,用于模式的最左側
?$:行位錨定,用于模式的最右側
?^PATTERN$:用于模式匹配整行
?^$:空行
?^[[:space:]]*$:空白行(包括空行和tab)
?\<或\b:詞首錨定,用于單詞模式的左側
?\>或\b:詞尾錨定,用于單詞模式的右側
?\<WORD\>:匹配整個單詞

4)分組
():將一個或多字符捆綁在一起,當作一個整體進行處理。分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命令方式為:\1、\2 ... 
\1:從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身)

5)或者
a | b:表示a或b(整個左側或右側)
C|cat:表示C或cat
(C|c)at:表示Cat或cat

(4)fgrep不支持正則表達式元字符,當無需用到元字符去編寫模式時,使用fgrep性能更好

(5)示例

1 、顯示/etc/passwd 文件中不以/bin/bash 結尾的行
    [root@localhost ~]# grep -v /bin/bash$ /etc/passwd
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin

2 、找出/etc/passwd 中的兩位或三位數
    [root@localhost ~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin

3使用egrep 取出/etc/rc.d/init.d/functions 中其基名
[root@localhost ~]# echo /etc/rc.d/init.d/functions | grep -E "[^/]+/?$"

原創文章,作者:pao,如若轉載,請注明出處:http://www.www58058.com/30798

(0)
paopao
上一篇 2016-08-07
下一篇 2016-08-07

相關推薦

  • 網絡這塊一些有趣的感想

    還記的那天老師讓我們做兩臺主機的nexthop就是自己的ip地址,然后互相ping測試能否互相聯通的實驗,昨晚之后我就在想能不能進行一些改進,因為在我看來這種級別的互相ping的前面一個網絡段相同太沒意思了。 接著我就嘗試了幾種IP地址 主機A 主機B 192.0.0.1 192.1.0.1 192.1.1.1 192.2.2.2 192.2.1.1 192…

    Linux干貨 2016-09-13
  • Linux基礎命令 2017-07-12日課

    bc, lscpu, free, dd, rpm, lsblk, ldd, file, hexdump, uname, sha1sum, sha256sum, md5sum bc an arbitrary precision language scale=NUM ; precision quit lscpu display information about…

    Linux干貨 2017-07-12
  • inode、軟硬鏈接區分、ln命令

    inode、軟硬鏈接區分、ln命令 一、inode inode記錄的是文件的屬性及文件實際放在那塊數據塊中的。inode包含以下數據: 1. 該文件的可被訪問的權限(read/write/excute) 2. 該文件的屬主、屬組(owner、group) 3. 該文件的大小 4. 該文件創建或者狀態改變的時間(Ctim…

    Linux干貨 2016-08-02
  • 學習目標

    先把落下的課補上……

    Linux干貨 2016-10-31
  • HAProxy淺說

    HAProxy淺說:    HAProxy響應碼:        200:請求正常,響應正常,也就是正常響應碼     301:配置使用的重定向,以下都是有關于重定向的一些響應碼,不做解釋     302:    &nb…

    2017-05-18
  • 22期第七周課堂練習

    1、創建一個10G分區,并格式為ext4文件系統;        (1) 要求其block大小為2048, 預留空間百分比為2,   卷標為MYDATA, 默認掛載屬性包含acl;        (2)   掛載至/data/mydata目錄,要求掛載時禁止程…

    Linux干貨 2016-10-09
欧美性久久久久