cat tac rev more less head tail
cut paste wc sort uniq diff
grep 正則表達式 egrep 擴展正則表達式
1. cat tac rev more less
(1)cat 查看
-E 顯示$ 換行符
-T 顯示TAB
-v 顯示非打印字符
-n 顯示行號
-s 將連續的重復空行變成一行
-A = -vET
(2)tac 只行顛倒,每行的內容不顛倒
(3)rev
(4)分頁查看文件內容
more: 分頁查看文件,空格翻頁,q退出
less :一頁一頁地查看文件
/ 文本 搜索文本
n 跳到下一個 N跳到上一個
less 命令是man 命令使用的分頁器
2. head tail
(1)head (默認顯示前10行)
-n 行號 顯示前n行 或 -行號 顯示前n行
-c 字節數 顯示前n個字節
(2)tail (默認顯示后10行)
-n 行號 顯示后n行 或 -行號 顯示后n行
-c 字節數 顯示后n個字節
-f 動態顯示
例1:顯示/etc/passwd文件的第11行至第20行
head -n 20 /etc/passwd |tail
例2:利用 cat /dev/urandom 生成10位字符長度的隨機密碼(包含大小寫字母及數字)
cat /dev/urandom | tr -d -c [:alnum:] | head -c 10 ;echo
3. cut paste wc
(1)cut 切
-d 指定分隔符
-f n[,n-r] 選取第幾列
–output-delimiter 指定輸出符
例1:cut -d: -f1,3 –output-delimiter=’.’ /etc/passwd
例2:顯示當前主機第一個網卡的IP地址
ifconfig |head -n 2| tail -n 1| tr -s ‘ ‘ : |cut -d: -f3
例3:查出/app目錄的空間使用量
df|tr -s ” ” % |head -n 4 |tail -n 1 |cut -d% -f5
df |head -n 8 |tail -n 1 |cut -c 44-46
(2)paste 粘合
paste f1 f2 [f3]
paste -s f1 將文件內容變成一行顯示 ,也可以用 tr ‘\n’ ‘\t’ 實現
paste -d “” f1 f2 [f3] 合并后的分隔符,默認TAB
(3)wc: word count 統計
-m 字符數 一個漢字算1個字符
-c 字節 一個漢字算3個字節
-l 行數
-w 單詞數
wc 行數 單詞數 字節
4. sort uniq diff
(1)sort 排序
-r 執行反方向(由上至下)整理
-n 執行按數字大小整理
-u 選項(獨特,unique)刪除輸出中的重復行
-t c 選項使用c做為字段界定符
-k X 選項按照使用c字符分隔的X列來整理能夠使用多次
-f 選項忽略(fold)字符串中的字符大小寫
(2)uniq 去除連續的重復行
要想去除非連續的行,先用sort排序
-c 顯示連續重復的次數
-d 僅顯示重復的次數
-u 僅顯示不曾重復的行
(3)diff f1 f2 僅比較區別
diff -u f1 f2 > diff.log 生成補丁
mv f2 f2.rm 相當于刪除了文件。
patch -b f1 diff.log 通過補丁還原文件 ,生成的f1為原來的f2,fi.orig為原f1
mv f1 f2 還原原始的新文件名
mv f1.orig f1 還原原始的舊文件名
diff f2 f2.rm 比較還原回來的新文件與被刪除的文件,發現沒有區別。
6. grep
grep : 由正則表達式字符及文本字符所編寫的過濾條件
grep root /etc/passwd
grep “$USER” /etc/passwd
grep `whoami` /etc/passwd
–color=auto: 對匹配到的文本著色顯示
-v:顯示不被pattern 匹配到的行 [^] 反向
-i: 忽略字符大小寫
-n:顯示匹配的行號
-c: 統計匹配的行數
-o: 僅顯示匹配到的字符串
-q: 靜默模式,不輸出任何信息 或 &> /dev/null
-A #: after, 后#行
-B #: before, 前#行
-C # :context, 前后各#行
-e :實現多個選項間的邏輯or 關系 相當于“…\|…”
-w :匹配 整個單詞
-E :使用ERE
-F :相當于fgrep
7. 正則表達式
(1). 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[:alnum:] 或 [0-9a-zA-Z]
[:alpha:] 或 [a-zA-Z]
[:upper:] 或 [A-Z]
[:lower:] 或 [a-z]
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
[:digit:] 十進制數字 或[0-9]
[:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
(2)* 匹配前面的字符任意次,包括0次
貪婪模式:盡可能長的匹配
.* 任意長度的任意字符
\? 匹配其前面的字符0 或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m 次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
(3)位置錨定:定位出現的位置
^ 行首錨定,用于模式的最左側
$ 行尾錨定,用于模式的最右側
^PATTERN$ 用于模式匹配整行
^$ 空行 grep -v ^$ 或 tr -s ‘\n’
^[[:space:]]*$ 空白行
\< 或 或 \b 詞首錨定,用于單詞模式的左側
\> 或 或 \b 詞尾錨定;用于單詞模式的右側
\<PATTERN\>
(4)分組:\(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(root\).*
分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
\1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
后向引用:引用前面的分組括號中的模式所匹配字符 , 而非模式本身
或者:\| 例:a\|b: a 或b C\|cat: C 或cat \(C\|c\)at:Cat 或cat
8. egroup 及 正則表達式
egrep egrep = grep -E
及 擴展的正則表達式 (除了\< , \> , \b 其他的都去掉\)
(1) 字符匹配:
. 任意單個字符
[] 指定范圍的字符
[^] 不在指定范圍的字符
(2) 次數匹配:
* :匹配前面字符任意次
? : 0 或1次 次
+ :1 次或多次
{m} :匹配m次 次
{m,n} :至少m ,至多n次
(3)位置錨定:
^ : 行首
$ : 行尾
\<, \b : 語首
\>, \b : 語尾
(4)分組:()
后向引用:\1, \2, …
或者:a|b: a 或b 例:C|cat: C 或cat (C|c)at:Cat 或cat
原創文章,作者:along,如若轉載,請注明出處:http://www.www58058.com/83129