文本處理工具:
more:分頁查看文件
less:分頁控制顯示文件
head 查看文件的前幾行
-n 3 顯示前三行
-3 顯示前三行
-c 指定顯示的字節數
一個漢字占用三個字節
tail 查看顯示文件的后幾行
-n 3 顯示后幾行
-c 顯示最后的指定字節數
-f 跟蹤顯示更新
cut [0ption] [file]
-d: 指明分隔符,默認為tab
-f:指明第幾列
#:第#個字段
#,#[,#]:離散的多個字段,如1,3,6
#-#:連續的多個字段,如1-5
混合使用:1-4,7 1到4列和第7列
-c:按字符切割
–output-d elimiter=STRING:指定輸出分隔符
paste 合并兩個文件同行號的列到一行
paste [option] [file]
-d 分隔符:指定分隔符,默認用tab
-s:所有的行合并到一行顯示
paste f1 f2
paste -s f1 f2
wc 計數單詞總數、行總數、字節總數和字符總數
可以對文件或STDIN 中的數據運行
wc story.txt
39 237 1901 story.txt
行數 字數 字符數
使用 -l 來只計數行數
使用 -w 來只計數單詞總數
使用 -c 來只計數字節總數
使用 -m 來只計數字符總數
sort 文本排序
把整理過的文本顯示在STDOUT ,不改變原始文件
sort [options] file(s)
常用選項
-r 倒序(由上至下)排列
-n 執行按數字大小排列
-f 選項忽略(fold )字符串中的字符大小寫
-u (獨特,unique )刪除輸出中的重復行
-t c: 指定c為字段分割符
-k X:指定的c字符分割的X列排序
unip行
uniq [OPTION]… [FILE]…
-c: 顯示每行重復出現的次數
-d: 僅顯示重復過的行
-u: 僅顯示不曾重復的行
連續且完全相同方為重復
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c
diff:比較兩個文件
比較兩個文件之間的區別
diff foo.conf-broken foo.conf-works
diff 命令的輸出被保存在一種叫做“補丁”的文件中
使用 -u 選項來輸出“統一的(unified )”diff 格式文件,最適用于補丁文件。
patch 復制在其它文件中進行的改變(要謹慎使用)
適用 -b 選項來自動備份改變了的文件
diff -u foo.conf-broken foo.conf-works > foo.patch
patch -b foo.conf-broken foo.patch
grep :文本過濾( 模式:pattern) 工具
grep, egrep, fgrep (不支持正則表達式 搜索)
sed :stream editor 文本編輯工具
awk :Linux 上的實現gawk,文本報告生成器
grep:
作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行模式:由正則表達式字符及文本字符所編寫的過濾條件.
選項:
–color=auto: 對匹配到的文本著色顯示
-v: 顯示不被pattern 匹配到的行
-i:忽略字符大小寫
-n:顯示匹配的行號
-c: 統計匹配的行數
-o: 僅顯示匹配到的字符串
-q: 靜默模式,不輸出任何信息
-A #: after, 后#行
-B #: before, 前#行
-C # :context, 前后各#行
-e :實現多個選項間的邏輯or 關系
grep –e ‘cat ’ -e ‘dog’ file
-w :匹配 整個單詞
-E :使用ERE
-F :相當于fgrep
正則表達式
由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能。
元字符分類:字符匹配、匹配次數、位置錨定、分組。
基本正則表達式元字符:
匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數 字符匹配:
. 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[:alnum:] 字母和 數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母 [:upper:] 大寫字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:] 包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…) )
[:digit:] 字 十進制數字 [:xdigit:] 十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
正則表達式匹配次數 :
匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
* 匹配 前面的字符任意次,包括0次 次
貪婪模式:盡可能長的匹配
.* 任意 長度的任意字符
\? 匹配 其前面的字符0 或1次
\+ 匹配 其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配 前面的字符至少m 次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
位置錨定 :定位出現的位置
^ 行首錨定,用于模式的最左側
$ 行尾錨定,用于模式的最右側
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或\b 詞首錨定,用于單詞模式的左側
\> 或\b 詞尾錨定;用于單詞模式的右側
\<PATTERN\>
分組 :\(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(xy\)\+
分組括號中的模式匹配到的內容會被正則表達式引擎記錄于 內部的變量中 ,這些變量的命名方式為: \1, \2, \3,
\1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
示例: \(ab\+\(xy\)*\)
\1 :ab\+\(xy\)*
\2 :xy
后向引用 :引用前面的分組括號中的模式所匹配字符,而非模式本身
或則:\|
示例:a\|b: a 或b C\|cat: C 或cat \(C\|c\)at:Cat 或cat
egrep及擴展的正則表達式
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE…]
擴展正則表達式的元字符:
字符匹配:
. 任意單個字符
[] 指定范圍的字符
[^] 不在指定范圍的字符
擴展正則表達式 :
次數匹配:
* :匹配前面字符任意次
?: 0 或1次
+ :1 次或多次
{m} :匹配m次
{m,n} :至少m ,至多n次
位置錨定:
^ : 行首
$ : 行尾
\<, \b : 語首
\>, \b : 語尾
分組:()
后向引用:\1, \2, …
或者:
a|b: a 或b
C|cat: C 或cat
(C|c)at:Cat 或cat
fgrep:不支持正則表達式
原創文章,作者:danran,如若轉載,請注明出處:http://www.www58058.com/77290