文本處理工具

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 14:17
下一篇 2016-08-07 22:05

相關推薦

  • ip,ss,htop,vmstat,until,while,ping命令使用. N28

    第六周(2018-1.1 – 2018-1.7)

    2018-01-08
  • 常用的MySQL數據庫備份

    常用的MySQL數據庫備份方式 前言 為什么需要備份數據? 數據的備份類型 MySQL備份數據的方式 備份需要考慮的問題 設計合適的備份策略 實戰演練 使用cp進行備份 使用mysqldump+復制BINARY LOG備份 使用lvm2快照備份數據 使用Xtrabackup備份 總結 前言 我們試著想一想, 在生產環境中什么最重要?如果我們服務器的硬件壞了可…

    2016-10-01
  • Linux bash編程基礎語法總結

    前言 在Linux學習過程中,我們無可避免的會碰到一個既讓人喜歡,又令人頭疼的神奇的東西——bash編程,即shell腳本。那么什么是shell腳本呢?shell是一個命令語言解釋器,而shell腳本則是Linux命令的集合,按照預設的順序依次解釋執行,來完成特定的、較復雜的系統管理任務,類似于Windows中的批處理文件。本文帶來的是bash編程的基礎語法…

    Linux干貨 2015-04-04
  • MarkdownPad2 簡單使用指南

    MarkdownPad2 簡單使用指南 一級標題 二級標題 三級標題加代碼 四級標題 這里是加粗 這里是正文and English 888 這里有正文嵌入代碼這種樣式 這里是代碼塊 這種使用的代碼塊 還有引用 這種格式 這種格式再加粗 拖下來一點的格式加個代碼 斜體 斜體內的加粗 自我改好的樣式 注意是這種風格的樣式! 附:一個很全的顏色代碼網頁h…

    2016-11-13
  • Linux的誕生史

    Linux誕生史 遠古記憶-UNIX的誕生 Multics計劃—開始 這是由麻省理工學院,通用電氣和AT&T的貝爾實驗室合作的操作系統項目,用于使用在GE-645大型主機上的。但是由于整個目標過于龐大,Multics雖然發布了一些產品,但是性能都很低,AT&T退出了Mulitcs項目,計劃終止???湯姆遜當時也參加了這個項目,很不…

    2017-07-11
  • awk

    文本處理工具 文本處理三工具:grep,sed,awk grep,egrep,fgrep:文本過濾工具 sed:行編輯器 awk:報告生成器,格式化文本輸出; awk gawk – pattern scanning and processing language lrwxrwxrwx. 1 root root 4 May 17 19:23 /bi…

    Linux干貨 2017-05-21
欧美性久久久久