2016/08/07:文本處理工具及正則表達式

  在本次課程中,本以為和前面的內容難度差不多,內心毫無提防,但在做隨堂練習的時候,被慘虐,不由得使我想起了高三時候拿到一張數學單元練習題,一道題也不會做的那種感覺,無助,彷徨,不甘。到了晚上總結了一下,還是有緣由可尋的。直接原因就是前面知識記得不牢固,也并未完全理解是和意思,尤其是tr命令,適用于何處,沒按照5W1H方法來進行總結學習,導致應用的時候思路不清,不能做到學以致用。以后的學習還得更用心,同時講究方式方法啊。



為何要使用文本處理工具和正則表達式,原因在于以前學過的tr,cut等命令大多數適合處理小部分字符,并且效率有限,所以更近一步搭配使用grep。正則的出現是為了精準的對所需要的字符串進行匹配,更加高效的查找。

1.

查看文本內容

less: opposite of more

more

兩個功能類似,less更全面一點,可以向前翻頁,pageup,pagedown

還可以/進行字符搜索

2.文件截取

  head

    -c 指定獲取文件前多少字節

    -n 取行

    – # 等同取-n 

head.png

  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

  行數  字數   字符數   文件名稱

QQ截圖20160807173114.png

 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

(0)
000000
上一篇 2016-08-07
下一篇 2016-08-07

相關推薦

  • 遷移分區

          1 備份/home    2 創建分區 /dev/sdc1 10G   [root@localhost ~]# du -sh /home   52K /home   3 格式化分區   [root@localhost …

    Linux干貨 2017-04-25
  • N22 網絡班-第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。   2、取出最后登錄到當前系統的用戶的相關信息。   3、取出當前系統上被用戶當作其默認shell的最多的那個shell。   4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxus…

    Linux干貨 2016-09-06
  • N22-第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # declare -i log_user declare -i notlog_user while read&n…

    Linux干貨 2016-10-24
  • 證書及加解密原理圖解

    證書管理 現在上網大多數網站都是使用https的協議,https是一個安全的訪問方式,數據在傳輸過程中是加密的,這時候在服務器端就需要使用證書。 科普加解密流程 服務器端客戶端 服務器在和客戶端通信前必須先建立SSL會話,下圖解析SSL會話過程

    Linux干貨 2016-09-25
  • 高級文件系統管理

    為用戶設定配額  執行開始或取消配額:quotaon quotaoff  取消編輯配額:edqouta username  在shell中直接編輯:setquota usename 80000 100000 0 0 /foo  定義原始標準用戶 :edquota -p user1 user2 實例如下: 配額的實現 1…

    Linux干貨 2017-05-02
  • centos6.9的安裝

    先準備一個安裝虛擬機的的軟件VMware Workstation Pro和光盤centos6.9和光盤 然后打開該軟件,點擊創建新的虛擬機   然后會出現一個新建虛擬機向導,選擇典型,點下一步 繼續點下一步   把虛擬機名稱改成所裝的版本 然后新建一個文件夾,點擊瀏覽,接著點擊這個新建的文件夾,這個文件夾就是虛擬機所裝入的位置,…

    2017-07-15
欧美性久久久久