在本次課程中,本以為和前面的內容難度差不多,內心毫無提防,但在做隨堂練習的時候,被慘虐,不由得使我想起了高三時候拿到一張數學單元練習題,一道題也不會做的那種感覺,無助,彷徨,不甘。到了晚上總結了一下,還是有緣由可尋的。直接原因就是前面知識記得不牢固,也并未完全理解是和意思,尤其是tr命令,適用于何處,沒按照5W1H方法來進行總結學習,導致應用的時候思路不清,不能做到學以致用。以后的學習還得更用心,同時講究方式方法啊。
為何要使用文本處理工具和正則表達式,原因在于以前學過的tr,cut等命令大多數適合處理小部分字符,并且效率有限,所以更近一步搭配使用grep。正則的出現是為了精準的對所需要的字符串進行匹配,更加高效的查找。
1.
查看文本內容
less: opposite of more
more
兩個功能類似,less更全面一點,可以向前翻頁,pageup,pagedown
還可以/進行字符搜索
2.文件截取
head
-c 指定獲取文件前多少字節
-n 取行
– # 等同取-n
tail
-c 后多少字節
-n 后幾行
-#
-f 跟蹤顯示文件新追加的內容,常用于日志監控
3.
cut 抽取文本字段
-d 指明分隔符
-f #
-f1-3,7 打印1,2,3,7字段
-c11-29 :打印從左至右第11字符到第29字符
–output-delimiter=STRING 指定輸出分隔符
4.paste 合并兩個文件同行號的列到一行
paste f1 f2
paste -s f1 f2
5.分析文件工具,整理統計,比較
wc:數據統計
$wc f1
39 237 1901 f1
行數 字數 字符數 文件名稱
wc
-l line:只計行數
-w 單詞數
-c 數字總節數
-m 字符總數
sort
-r
-n 執行數字大小整理
-f
-u 刪除輸出中的重復行
-t c :選項使用c作為定界符
-k X :按照X列來排序
uniq:從輸入中刪除重復的前后相接的行
-c 顯示每行重復重復出現的次數
-d 僅顯示重復的行
-u 僅顯示不曾重復的行
diff 比較兩個文件之間的區別
****************************
隨堂練習
1、找出ifconfig命令結果中本機的所有IPv4地址
2、查出分區空間使用率的最大百分比值
3、查出用戶UID最大值的用戶名、 UID及shell類型
4、查出/tmp的權限,以數字方式顯示
5、統計當前連接本機的每個遠程主機IP的連接數,并按從大
到小排序
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
文本處理第一大劍客
grep:Global search REgular expression and Print out the line
用指定模式進行逐行匹配
grep
–color=auto:匹配到的文本著色,最好寫入環境變量中~/.bashrc
-v 取反,顯示不能被匹配到的行
-i 忽略字符大小寫
-n 顯示行號
-c 統計匹配到的行數
-o 僅顯示匹配到的字符串
-q 靜默模式,無任何輸出
-A after,后幾行
-B before,前幾行
-C 前后各n行
-e 實現多個選項間的邏輯or關系
grep -e 3 -e 9
-w
-E ERE,=egrep,擴展的正則表達式
****************************
****************************
****************************
REGEXP
字符匹配
. 任意單個字符
[] 括號內的任意單個字符
[^] 指定范圍外的任意單個字符
[:alpha:] 所有字母
[:alnum:] 數字和字母
[:punct:] 標點符號
[:digit:] 所有數字
次數匹配
* 匹配前面的字符任意次,包括0次,貪婪模式
.* 任意長度的任意字符
\? 前面的字符0或者1次
\+ 匹配前面的字符至少一次
\{m\} 匹配前面的字符至少m次
\{m,n\} 至少每次,至多n次
位置錨定
^ 行首錨定
$ 行尾錨定
^$ 空行
^PATTERN$ 用于模式匹配整行
^[[:space:]]$:空白行
\< 詞首錨定 \b
\> 詞尾錨定 \b
\<PATTERN\> 匹配整個單詞
***
分組 分組括號中的模式匹配到的內容會被正則表達式引擎記錄
于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
后向引用:引用前面模式匹配到的字符
********************
隨堂練習2
1.顯示/proc/meminfo文件中以大小s開頭的行; (要求:使
用兩種方式)
2、顯示/etc/passwd文件中不以/bin/bash結尾的行
3、顯示用戶rpc默認的shell程序
4、找出/etc/passwd中的兩位或三位數
5、顯示/etc/grub2.cfg文件中,至少以一個空白字符開頭的
且后面存非空白字符的行
6、找出"netstat -tan"命令的結果中以'LISTEN'后跟0、 1
或多個空白字符結尾的行
7、添加用戶bash、 testbash、 basher以及nologin(其shell為
/sbin/nologin),而后找出/etc/passwd文件中用戶名同shell名
的行
************************
egrep
次數匹配
*
?0或1次
+ 至少一次
{m} 匹配m次
{m,n}:至少m次,至多n次
分組:
()
后向引用 \1,\2
或者
a|b:
C|cat:
(C|c)at或cat
******************************
隨堂練習3
1.顯示當前系統root、 mage或wang用戶的UID和默認shell
2、找出/etc/rc.d/init.d/functions文件中行首為某單詞(包
括下劃線)后面跟一個小括號的行
3、使用egrep取出/etc/rc.d/init.d/functions中其基名
4、使用egrep取出上面路徑的目錄名
5、統計以root身份登錄的每個遠程主機IP地址的登錄次數
6、利用擴展正則表達式分別表示0-9、 10-99、 100-199、
200-249、 250-255
7、顯示ifconfig命令結果中所有IPv4地址
原創文章,作者:000,如若轉載,請注明出處:http://www.www58058.com/30599