一、文本工具
在linux中,有很多優秀且功能強大的文本處理工具,對文件內容進行查找、替換、刪除、排序等操作,是linux進行文本處理變得特別方便。日常工作中,經常會用文本處理進行日志分析,文本抽取等,所以掌握文本處理,將會對我們的工作起到極大的作用。
cat:查看文件
cat [OPTION]…[FILE]…
-n 顯示每行編號
-E 顯示行結束符
-A 顯示所有控制符
-b 顯示非空行編號
-s 壓縮連續的空行成一行
more:分頁查看文件
more [OPTION…] FILE…
-d 顯示翻頁和退出的提示
less:逐頁查看文件或用STDIN輸出
查看時常用的快捷鍵
/文本 搜索
n/N 跳到上一個或下一個匹配的文本
(man命令使用less分頁器)
head:查看前文檔的前十行內容
-c # 指定獲取前#個字節
-[n] # 獲取指定的前n行
cut 抽取文本
cut [OPTION]…[FILE]…
-d DELIMITER 指定分隔符,默認下tab
-f 跟蹤顯示文件按新追加的內容,常用于日志文件的監控
# 第#個字段
#,#[,#…] 顯示離散的多個字段
#-# 顯示連續的多個字段
可以混合使用:#-#,#:例如1-3,5
-c 按照字符切割
–out-delimiter=STRING 指定輸出分隔符
paste多個文件同行合并
paste [OPTION]…[FILE]…
-d 指定分隔符
-s 把所有的行合成一行顯示
wc:收集文本統計數據
wc DIR 顯示順序為,行數、字數、字符數、文件名。
-l 僅顯示行數
-w 僅顯示單詞總數
-c 僅顯示字數
-m 僅顯示數字符總數
sort:文本排序
sort [OPTION] FILE(s) 在不改變原文件的情況下,把原文件中的內容顯示在STDOUT
-r 反向整理
-n 按數字大小整理
-f 忽略字符串大小寫
-u uniqe刪除重復的行
-t 使用指定的字段界定符,默認tab
uniq:從輸入中刪除連續重復的行
-c 僅顯示每行重復出現的次數
-d 僅顯示重復過的行
-u 顯示不曾重復的行
經常和sort一起使用
diff DIR1 DIR2:比較兩個文件之間的差別,命令輸出被保存到一個補丁文件中,使用-u選項可以輸出diff格式的文件,適用于補丁文件。
patch:復制在其他文件中進行的改變
-b 自動備份改變的文件
文件備份示例:
$ diff -u f1 f2 > f.patch
$ patch -b f1 f2
grep:根據指定的模式對目標文件匹配過濾,打印想要的內容
grep [OPTIONS] PATTERN [FILE…]
–color=auto 對匹配到的文本著色顯示,CentOS7默認執行
-v 過濾掉匹配到的行,顯示其他行
-i 忽略字符的大小寫
-n 顯示匹配到的行號
-c 統計匹配的行數
-o 僅顯示匹配到的字符串
-q 不顯示任何內容
-A # 顯示匹配到的后#行
-B # 顯示匹配到的前#行
-C # 顯示匹配到的先后#行
-e 實現多個選項之間的邏輯or關系
-w 整行匹配整個單詞
-E 使用ERE擴展正則表達式
sed:Stream EDitor,行編輯器
sed是一種流編輯器,每次只處理一行內容,把當前處理的行存儲在臨時文件緩沖區中,稱為“模式空間(pattern space)”,然后用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,知道文件末尾。文件內容沒有任何改變。sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。
sed [OPTION]… 'script' inputfile…
常用選項:
-n 不輸出模式空間內容的自動打印
-e 多點編輯
-f /PATH/TO/SCRIPT_FILE 從指定文件讀取腳本
-r 支持使用擴展正則表達式
-i 更改原文件(謹慎使用)
地址定界規則:
(1)沒有地址時,默認對全文處理
(2)單行地址
# 指定的行
/PATTERN/ 能被此模式匹配到的每一行
(3)地址范圍
#,# 中間的所有行
#,+# 指定行向下的幾行
/PART1/,/PAER2/
#,/PART1/
(4)~步進
1~2 表示奇數行
2~2 表示偶數行
編輯命令:
d 刪除模式空間匹配的行
p 顯示模式空間中的內容
a\text 在匹配的行后面追加文本,支持/n實現多行追加
i\text 在匹配到的行前面插入文本,支持使用\n實習那多行插入
c\text 替換匹配到的單行或多行文本
w /PATH/TO/FILE 保存模式匹配到的行到文件中
r /PATH/TO/FILE 讀取指定文件的文本至模式空間中匹配到的行后面
= 為模式空間中的行打印行號
! 模式空間中匹配到的行取反處理
s/// 查找并替換,可以使用其他分隔符,如s@@@,$$$
g 行內全局替換
p 顯示成功替換的行
w /PATH/TO/FILE 將替換成功的行保存至文件中
二、正則表達式
正則表達式:有一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不再表示本身的字面意義,而是表示控制或通配的功能。Linux中,很多程序支持正則表達式,正則表達式一般分為,基本正則表達式和擴展正則表達式。
正則表達式元字符
位置錨定
^:行首錨定,用于模式的最左側
&:行尾錨定,用于模式的最右側
^PATTERN$:匹配整行
^&:表示空行
^[[space:]]:表示空白行
\<:詞首錨定,用于單詞模式的左側
\>:詞尾錨定,用于單詞模式的右側
\<PATTERN>\:匹配整個單詞
分組匹配:
\(PATTERN\)可以將一個或多個字符捆綁在一起,當作一個整體進行處理。分組括號中的模式匹配到的內容會被正則表達式引擎記錄內部的變量中,這些變量的命名方式為:\1,\2,,…可以用來引用括號中模式所匹配到的字符。其中,\1表示從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符。
原創文章,作者:zhanghuanyu,如若轉載,請注明出處:http://www.www58058.com/30939