概述:
Linux核心哲學思想中很重硬件要的一條內容就是一切皆文件,在Linux系統上,無論硬件、軟件、配置文件等等一切,都以文件形式呈現出來。一般文件類型有:普通文件、目錄文件、鏈接文件、管道文件、套接字文件、字符設備文件、塊設備文件等。而普通文件里面又有一些文本文件、二進制文件等細分化的文件類型,而我們日常系統管理工作,主要就是對一些文本類型的文件,進行新增、刪除、修改、查詢等相關操作,來完成系統的維護,那么對文本處理就變成了我們必不可少的基礎既能。
本章就先簡單介紹一些文本的查看,分析,統計工具,以及正則表達式和grep的相關內容,主要的內容包含以下幾個部分:
1、文本查看工具介紹(cat、tac、rev、head、tail、more、less、cut、paste)
2、文本統計工具介紹(wc、sort、uniq)
3、文本比較工具介紹(diff、patch)
4、基本正則表達式和擴展正則表達式介紹
5、文本處理三劍客之grep介紹
涉及到的命令主要有:cat、tac、rev、head、tail、more、less、cut、paste、wc、sort、uniq、diff、patch、grep、egrep、fgrep
第一章 文本查看工具介紹
1、cat文本查看工具
語法:cat [OPTIONS] FILE
常用選項:
-n 顯示行號,空白行也加
-b 顯示行號,空白行不加
-ns 顯示行號,然后出去重復的行顯示為一行(相鄰且相同)
-T 顯示TAB鍵
-v 顯示^M ,也就是\r 的內容,相當于顯示Windows的換行鍵
-A 顯示所有的內容,所有的隱藏字符,TAB、換行之類的
示例:
2、tac:文本查看工具,與cat一樣,只是把cat的內容按行倒序顯示
示例:
3、rev:反向顯示文件中每一行的內容
例如:如文件中是abcdefg,如果用rev顯示,則顯示為gfedcba
4、head:顯示文件的前幾行,默認是前10行
語法:head [OPTIONS] FILE…
常見選項:
-n 數字:表示顯示文件的前幾行
-數字:與-n 數字 功能一樣,顯示文件的前幾行
-c 數字:表示顯示文件的前多少個字節,而不是多少行
示例:
5、tail:顯示文件的后幾行,默認是10行
語法:tail [OPTIONS] FILE…
常見選項:
-n 數字 :顯示文件后幾行
-數字:與-n 數字 功能一樣,顯示文件的后幾行信息
-n +數字: 從第幾行開始顯示文件信息
-c 數字:顯示文件的后多少個字節,而不是后幾行
6、more:分頁顯示文件內容,只能向下翻頁,不能向上翻頁
選項:
-d 能顯示提示信息
在more界面中,可以運行:
!執行外部命令
/string 搜索關鍵字
!COMMAND 在more界面下,執行bash命令結果顯示在more界面中,不用退出more
q 退出more界面
7、less:分頁顯示文件內容,既能向上翻頁,又能向下翻頁
在less界面時:
/string 向下搜索關鍵字
?string 向上搜索關鍵字
n 按照搜索方向,順向顯示下一個匹配到的內容
N 按照搜索方向,逆序顯示下一個匹配到的內容
!COMMAND 在less界面下,執行某命令,不用退出less
q 退出less界面
8、cut:字段截取工具,按照指定的分隔符進行分割后顯示,默認分隔符為TAB鍵
語法:cut[OPTION]…[FILE]…
-d 指定分隔符,默認為tab
-f FILEDS
# 第#個字段
#,#,… 離散的多個字段,如-f1,3,6
#-# 連續的多個字段,如-f1-3
-c 按字符切割,取第幾個字符到第幾個字符數顯示的內容
–output-delimiter=STRING 指定輸出分隔符
示例:
9、paste:合并兩個文件同行號的列到一行
選項:
-d 分隔符 合并時指定分隔符,默認為tab
-s 將一個文件所有行合并成一行顯示
示例:
第二章 文本統計工具介紹
1、wc 統計工具
語法:wc [OPTION]… FILE
-l 顯示多少行
-c 顯示多少個字節,3個字節標識一個漢字,但是1個漢字只算一個字符
-w 顯示單詞數量
-m 顯示字符數
示例:
2、sort 排序命令
語法:sort [OPTIONS]… FILE 排序時默認是按字符a-z排序
常用選項
-r 逆序顯示
-n 按數字大小排序
-f 忽略字符大小寫
-u 刪除結果中的重復行(不管相不相鄰,都去重)
-t STRING 選項使用指定字符做為字段界定符
-k X 選項按照使用上面-t字符分隔的X列來整理能夠使用多次
示例:
3、uniq:去重顯示,(相鄰且相同才認為是重復)
語法:uniq [OPTION]… [FILE]…
-c: 顯示每行重復出現的次數;
-d: 僅顯示重復過的行;
-u: 僅顯示不曾重復的行;
連續且完全相同方為重復
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c
示例:
第三章 文本比較工具介紹
1、diff 比較兩個文件之間的不同之處
語法:diff [OPTIONS] FILE1 FILE2
常用選項:
-u 表示利用重定向,將不同之處生成補丁文件,以供利用patch還原用
示例:
2、patch補丁工具,復制改變的數據到文件中
語法:patch [OPTIONS] FILE PATCHFILE
選項:
-b 表示自動備份改變了的文件
示例:
第四章 基本正則表達式和擴展正則表達式介紹
1、基本正則表達式
字符匹配:
. : 匹配任意單個字符;
[] : 匹配指定范圍內的任意單個字符
[^] :匹配指定范圍外的任意單個字符
[0-9]:匹配0-9之間的數字
[1-9]:匹配1-9之間的數字,注意向匹配10-19之間的數字不能寫成[10-29],要每一位分別寫[1-2][0-9]
[:digit:]:匹配數字
[:lower:]:匹配小寫字母
[:upper:]:匹配大寫字母
[:alpha:]:匹配所有大寫和小寫字母
[:alnum:]:匹配數字和大小寫字母
[:punct:]:匹配標點
[:space:]:匹配空白字符
匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
*:匹配前面的字符任意次,包括0次
貪婪模式:盡可能長的匹配
.*:任意長度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配其前面的字符至少1次
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符至少m次,至多n次
\{,n\}:匹配前面的字符至多n次
\{m,\}:匹配前面的字符至少m次
位置錨定:定位出現的位置
^:行首錨定,用于模式的最左側
$:行尾錨定,用于模式的最右側
^PATTERN$: 用于模式匹配整行
^$: 空行
^[[:space:]]*$ :空白行
\< 或 \b:詞首錨定,用于單詞模式的左側
\> 或 \b:詞尾錨定;用于單詞模式的右側
\<PATTERN\>:匹配整個單詞
分組: \(\):將一個或多個字符捆綁在一起,當作一個整體進行處理
后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身)利用: \1, \2, \3, …來引用前面第一個括號、第二個括號…匹配到的內容
如: \(niwenchao\+\(nwc\)*\)
\1: niwenchao\+\(nwc\)*
\2: nwc
示例:
# grep "^\([[:alnum:]]\+\>\).*\1$" /etc/passwd
2、擴展正則表達式
個人總結為:相比基本正則表達式,一些需要轉義的位置,除了詞首詞尾錨定\<\>都不需要加轉義符,另外增加了或關系的表達式(|)
字符匹配:
. 任意單個字符
[] 指定范圍的字符
[^] 不在指定范圍的字符
[0-9]:匹配0-9之間的數字
[1-9]:匹配1-9之間的數字,注意向匹配10-19之間的數字不能寫成[10-29],要每一位分別寫[1-2][0-9]
[:digit:]:匹配數字
[:lower:]:匹配小寫字母
[:upper:]:匹配大寫字母
[:alpha:]:匹配所有大寫和小寫字母
[:alnum:]:匹配數字和大小寫字母
[:punct:]:匹配標點
[:space:]:匹配空白字符
次數匹配:
*:匹配前面字符任意次
?: 0或1次
+: 1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
位置錨定:
^ :行首
$ :行尾
\<, \b :詞首
\>, \b :詞尾
分組:
()
后向引用: \1, \2, …
或者:
a|b
C|cat: C或cat
(C|c)at:Cat或cat
第五章 文本處理三劍客之grep介紹
grep:過濾出特定的行
grep 支持標準正則表達式
egrep 支持擴展正則表達式,相當于grep -E
fgrep 不支持正則表達式
語法:grep [OPTIONS] PATTERN [FILE…]
選項:
–color=auto: 對匹配到的文本著色顯示;
-v: 顯示不能夠被pattern匹配到的行;
-i: 忽略字符大小寫
-n: 顯示匹配的行號,匹配到的是第幾行
-c: 統計匹配的行數,匹配到了多少行
-o: 僅顯示匹配到的字符串;
-q: 靜默模式,不輸出任何信息
-A #: after, 后#行,除了顯示匹配到的行外,還顯示匹配到的行的后幾行
-B #: before, 前#行,除了顯示匹配到的行外,還顯示匹配到的行的前幾行
-C #: context, 前后各#行,除了顯示匹配到的行外,還顯示匹配到的行的前后各幾行
-e:實現多個選項間的邏輯or關系
grep –e ‘cat ’ -e ‘dog’ file
多個-e 之間是或關系
-w:整行匹配整個單詞,只能匹配整個單詞,不能是一個單詞的一部分,前后可以是符號,但是不能是字母
-E:使用ERE,相當于egrep
-F:相當于fgrep,不支持正則
nmap -sP -v 10.1.252.210/24 表示掃描該網段的主機
查看網段內有哪些主機處于連接狀態:
nmap -sP -v 10.1.252.210/24 |grep -B1 “up”|grep -v “up”
正則表達式表示身份證號
1: [1-9]
2-6: [0-9]{5}
78: (19|20|21)
9-10 [0-9]{2}
11-12 ((0[1-9])|11|12)
13-14 ((0[1-9])|([12][0-9])|(3[0-1]))
15-17 [0-9]{3}
18 [0-9X]
# egrep "\<[1-9][0-9]{5}(19|20|21)[0-9]{2}((0[1-9])|(10|11|12))((0[1-9])|([12][0-9])|(3[0-1]))[0-9]{3}[0-9Xx]\>"
找出ifconfig命令結果中本機的所有IPv4地址
# ifconfig|grep -E -o "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/29961