Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令

wc命令:
wc [option]… [file]…
-l:lines
-w:words
-c:characters
Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
cut命令:
cut [options]…[file]…
-d DELIMETER:指明分隔符;
-f FILEDS:
#:第#個字段
#,#[,#]:離散的多個字段,例如1,3,6
#-#:連續多個字段,例如1-6
混合使用:1-3,7
--output-delimiter=STRING:指定以什麼字符串輸出;
Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
sort命令:
sort [option]…[file]…
-f:忽略大小寫
-r:逆序
-t DELIMETER:字段分隔符;
-k #:以指定的字段爲標準排序;
-n:以數值大小進行排序
-u:uniq,排序後去重;
Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
uniq命令:
uniq [option]…[file]…
-c:顯示每行重複出現的次數;
-d:僅顯示重複過的行;
-u:僅顯示不曾重複的行;
Note:連續且完全相同方爲重複;
Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
練習:以冒號爲分隔,取出/etc/passwd文件的第6行至第10行,並將這些信息按第3個字段的數值大小進行排序,最後顯示的各自的第1字段;
Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令

grep:
linux 上文本處理三劍客
grep:文本過濾(模式:pattern)工具;
sed:stream editor,文件編輯工具;
awk:linux上的實現gawk,文本報告生成器;
grep:Global search REgular expression and Print out the line.
作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行匹配檢查;打印匹配到的行;
模式:由正則表達式字符及文本字符所編寫的過濾條件;
REGEXP:由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示字符字面意義,而表示控制或通配的功能;
分兩類:
基本正則表達式:BRE
擴展正則表達式:ERE
grep –E ,egrep
正則表達式引擎
grep [OPTIONS] PATTERN [FILE…]
選項:
--color=auto:對匹配到的文本着色顯示;
-v:顯示不能夠被pattern匹配到的行;
-i:忽略字符大小寫;
-o:僅顯示匹配到的字符串;
-q:靜默模式,不輸出任何信息;
-A #:after,後#行
-B #:before,前#行
-C #:context,前後各#行

    -E:使用ERE

基本正則表達式元字符:
字符匹配:
.:匹配任意單個字符;
[]:匹配指定範圍內的任意單個字符;
[^]:匹配指定範圍外的任意單個字符
[:digit:] [;lower:] [;upper:] [:alpha:] [:alnum:] [:punct:] [:space:]
匹配次數:用在要指定次數的字符後面,用於指定前面的字符要出現的字數;
:匹配前面的字符任意次;
.
:任意長度的任意字符;
\?:匹配其前面的字符0或者1次;即前面的可有可無;
+:匹配其前面的字符至少一次;
{m}:匹配前面的字符m次;
{m,n}:撇批前面的字符至少m次,至多n次;
{0,n}:匹配前面的字符至多n次;
{m,}:匹配前面的字符至少m次
位置錨定:
^:行首錨定;用戶模式的最左側;
$:行尾錨定;用於模式的最右側;
^PATTERN$:用於匹配模式整行;
^$:空行;
^[[:space:]]$:空行;
\< 或 \b:詞首錨定;用於單詞模式的左側;
\> 或 \b:詞尾錨定;用於單詞模式的右側;
\<PATTERN>\>:匹配整個單詞;
分組:
():將一個或多個字符捆綁在一起,當作一個整體進行處理;
(xy)
ab
Note:分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中,這些變量的命名方式爲:\1,\2,\3,…
\1:從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符:
(ab+(xy)):
\1:ab+(xy)

\2:xy
後向引用:引用前面的分組括號中的模式所匹配的字符,(而非模式本身)
練習:

  1. 顯示/proc/meminfo文件中以大小s開頭的行;(要求:使用兩種方式)
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  2. 顯示/etc/passwd文件中不以/bin/bash結尾的行;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  3. 顯示/etc/passwd文件中ID號最大的用戶的用戶名;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  4. 如果用戶root存在,顯示其默認的shell程序;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  5. 找出/etc/passwd中的兩位或三位數;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  6. 顯示/etc/rc.d/rc.sysinit文件中,至少以一個空白字符開頭的且後面存非空白字符的行;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  7. 找出"netstat -tan"命令的結果中以'LISTEN'後跟0、1或多個空白字符結尾的行;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  8. 添加用戶bash、testbash、basher以及nologin(其shell爲/sbin/nologin);而後找出/etc/passwd文件中用戶名同shell名的行;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令

egrep及擴展的正則表達式
egrep = grep –E
egrep [OPTIONS] PATTERN [FILE...]
擴展正則表達式的元字符:
字符匹配:
.:任意單個字符
[]:匹配範圍內的任意單個字符
[^]:匹配範圍外的任意單個字符;
次數匹配:
*:匹配前面的字符任意次;
?:0次或1次;
+:1次或多次;
{m}:m次;
{m,n}:至少m次,至多n次;
錨定:
^:行首;
$:行尾;
\<,\b:詞首;
\>,\b:詞尾;
分組;
():
後向引用:\1,\2,…
或者:
a|b
c|Cat:c或者Cat

  1. 顯示當前系統root、centos或user1用戶的默認shell和UID;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  2. 找出/etc/rc.d/init.d/functions文件(centos6)中某單詞後面跟一個小括號的行;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  3. 使用echo輸出一絕對路徑,使用egrep取出其基名;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
    進一步地:使用egrep取出路徑的目錄名,類似於dirname命令的結果;
  4. 找出ifconfig命令結果中1-255之間的數值;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
  5. 找出ifconfig命令結果中的IP地址;
    Linux自學筆記——grep文本處理工具及wc,cut,sort,uniq命令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章