-N 顯示行號
查看時使用的命令
/ OR ? 搜索的內容 搜索關鍵字
n下一個匹配到的內容
N上一個匹配到的內容
space 向下翻一頁
enter 向下翻一行
u 向上翻半頁
y 向上翻一行
cat 查看文件 內容會直接全部輸出在屏幕上
-n 給每行前面加上行號
-b 給非空行前面加上行號
-s 把空行合并成一行
-E 顯示行結束符$
-T 顯示制表符
-v 顯示隱藏字符
-A -vTE的組合,顯示所有隱藏字符
tac 倒著查看文件
enter 查看下一行
space 查看下一頁
Ctrl+B 查看上一頁
b 回到最上面
q 退出
-n number OR -number 查看文件前面指定數量的行數
-c 總共獲取的字符數
-n number OR -number 查看文件后面指定數量的行數
-f /[file] 跟蹤指定文件的新追加的內容
例子:tail -f /var/log/httpd/access_log | grep “172.16.1.10”
-c 總共獲取的字符數
文本編輯工具
-d “:” 文本分隔符,默認是tab
-f # 以分隔符劃分的第幾個字段
# 第幾個字段
#,#[#,#] 不相連的多字段
#-# 連續的字段
#-#,# 混合字段
-c # 以每行第#字符截取
例子:cut -d “/” -f 1-2,4 /etc/fstab
-d 分隔符:指定行劃分的界限
-s 所有行顯示在一行顯示
例子:paste -d”:” -s file1 file2
文本數據收集與整理
例子: $wc /etc/fstab
17 90 993 /etc/fstab
17是行數 -l 只看行數
90是單詞數 -w 只看單詞數
993是字符數 -c OR -m 只看字數
-r 反響整理文件 (上大下?。?br /> -n 按數學大小排序
-f 忽略大小寫
-u 刪除重復的行
-t # 使用#作為字段分界符
-k # 使用#以分界符為段數來排序
例子:sort -t “:” -k 3 -n /etc/passwd
-c 顯示每行出現重復次數
-d 之顯示重復過的行
-u 之顯示不重復過的行(完全相同的行為重復)
例子:cat /etc/passwd | sort -n -d “:” -k 3 | sort -c
例子:diff file1 file2
6c6 第六行第六個字符不一樣
< kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
—
> kkkkk7kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
linux文本處理三劍客
grep文本搜索工具
egrep 擴展正則表達式
fgrep 不支持正則表達式
sed 行編輯器
awk 文本處理工具
# #搜索的文本,可以調用變量“$USER” ‘$USER’,也可以用命令`whoami`
–color=auto 對匹配到的文本作色顯示(7上支持)
-v 不顯示匹配到的內容
-i 忽略大小寫
-n 顯示匹配的行號,在前面顯示匹配到的字段在文件里原有的行數位置
-c 統計匹配的行數,之顯示匹配到多少數量。
-o 只顯示匹配到的字符段。
-q 靜默模式,不輸出任何信息。
-w 匹配整個單詞
-e 指定多個條件,條件是或的關系
例子:grep -e “root” -e “ftpd” /etc/passwd
-A # 匹配到的字段所在行的后#行 (其他參數最好在前面)
-B # 匹配到的字段所在行的前#行 (其他參數最好在前面)
-C # 匹配到的字段所在行的前后#行(其他參數最好在前面)
-E 相當于egrep,使用新的正則。(ERE)
-F 相當于fgrep,不使用正則表達式。
由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義。
正則表通常被用來檢索、替換那些符合某個模式(規則)的文本。
程序支持:grep,sed,awk,wim,less,nginx,,varnish等
分類:
BRE 基本正則表達式:grep
ERE 擴展正則表達式:egrep grep -E
PCRE 正則表達式引擎
PCRE是一個perl庫,采用不同算法,檢查處理正則表達式的軟件模塊.
元字符 正則表達式中具有特殊意義的專用字符
元字符分類 字符匹配、匹配次數、位置錨定、分組
字符匹配 (要用[]再把特殊元字符擴上,不然系統會認定是普通括號)
. 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符
例子:grep -E [123] /etc/passwd
[^] 匹配指定范圍外的任意單個字符
例子:grep -E [^123] /etc/passwd
[:alnum:] 匹配字母和數字
例子:grep -vE [[:almun:]] /etc/passwd
[:alpha:] 匹配大小寫字母
[:lower:] 匹配小寫字母
[:upper:] 匹配大寫字母
[:blank:] 匹配空白區和制表符。等效于 [ \t]。
[:space:] 匹配空格,制表符。
[:cntrl:] 匹配不可打印的控制字符。(括換行符、換頁符、退格、空格、空、制表符、空白等)
[:digit:] 匹配十進制數字(0-9)
[:xdigit:]匹配十六進制數字(0-f)
[:graph:] 匹配打印字符。等效于 [[:alnum:][:punct:]]。 (換行可以匹配到)
[:print:] 匹配打印字符和空格。(不包擴制表位)
[:punct:] 匹配標點符號
匹配次數 用在指定次數的字符后面,指定字符出現的次數。
* 匹配前面字符出現最少0次,最多無限次。(貪婪模式)
例子:.* 匹配任意長度的字符
\? 匹配前面的字符0至1次。
\+ 匹配前面的字符至少1次。
\{n\} 匹配前面的字符N次。
\{m,n\} 匹配前面字符至少出現M次,最多出現N次。
\{,n\} 匹配前面的字符最多出現N次。
\{n,\} 匹配前面的字符最少出現N次。
位置錨定 定位出現的位置
^ 行首錨定 用于模式的最左側
例子:egrep ^[[:almun:]]* /etc/passwd
$ 行尾錨定 用于模式的最右側
例子:grep -E [1-7]/{3,10/}$ /etc/passwd
^root$ 整行匹配
^$ 空行
^[[:space:]]$ 匹配空行
\< or \b 詞首錨定:用于單詞的左側
\> or \b 詞尾錨定:用于單詞的右側
\b#\b or \<#\> 匹配整個單詞
分組 \(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理。
分組括號里匹配到的內容,會存入變量1中。左往右,從1開始往下數。
\1 表示左邊第一個分組括號的匹配到的內容變量。
\(string1\+\(string2\)*\)
\1 string1\+\(string2\)*
\2 string2
后向引用:引用前面的分組括號中的模式所匹配字符,而非 模式本身
\| 或 a\|b a or b。
原創文章,作者:sheep,如若轉載,請注明出處:http://www.www58058.com/73255