Linux中锚定符号的作用,Linux基础(9)文本处理三剑客之grep
grep的作用:根據指定的模式搜索文本,將匹配到的文本行顯示出來
語法格式:grep [options] "PATTERN" file
PATTERN為正則表達式,grep一般是與正則表達式配合使用的,因此我們先介紹shell下的正則表達式。正則表達式,簡單來說就是匹配規則。某一行文本與正則表達式進行匹配只有兩種結果,要么匹配,要么不匹配。
接下來我們詳細的介紹下正則表達式
1.元字符:
.: 匹配任意單個字符
[]: 匹配指定范圍內的任意單個字符
[^]:匹配指定范圍外的任意單個字符
字符集合:
[:digit:] ?or [0-9] 數字 ?#####注意,在正則表達式中表示單個數字需要使用[[:digit:],比如說
grep '^[0-9]' ?1.txt 等價與 grep '^[[:digit:]]' 1.txt
但是grep '^[:digit:]' 1.txt的寫法是錯誤的 下面一樣,不在贅述。
[:lower:] ?or [a-z] 小寫字母
[:upper:] ?or [A-Z] 大寫字母
[:punct:] ?標點符號
[:space:] ?空白
[:alpha:] [a-zA-Z] 字母
[:alnum:] [a-zA-Z0-9] 字母+數字
[^[:digit:]] 非數字
2.匹配次數(貪婪模式, ?一直匹配到最后):
*: 匹配其前面的字符任意次
a, b, ab, aab, acb, adb, amnb
a*b, a?b
a.*b
.*: 任意長度的任意字符 (注意,區別于通配符)
\?: 匹配其前面的字符1次或0次 ? ? 別忘了轉義\
\{m,n\}:匹配其前面的字符至少m次,至多n次 ? ?別忘了轉義\
\{1,\} ?至少1次
\{0,3\} 0到3次
3.位置錨定:
^: 錨定行首,此字符后面的任意內容必須出現在行首
$: 錨定行尾,此字符前面的任意內容必須出現在行尾
^$: 空白行
\
\>或\b: 錨定詞尾,其前面的任意字符必須作為單詞的尾部出現
4.分組: 別忘了轉義
\(\)
\(ab\)* ?ab看做是一個整體
后向引用
\1: 引用第一個左括號以及與之對應的右括號所包括的所有內容
\2:
\3:
在指定正則表達式的同時也可以指定選項
-i 忽略大小寫
-v 顯示不匹配的行
-o 只顯示匹配的字符串
--color 高亮顯示匹配到的內容
-E: 使用擴展正則表達式
光說不練假把式。下面給出幾個例子
1、顯示/proc/meminfo文件中以不區分大小的s開頭的行;
grep -i '^s' /proc/meminfo
grep '^[sS]' /proc/meminfo
2、顯示/etc/passwd中以nologin結尾的行;
grep 'nologin$' /etc/passwd
取出默認shell為/sbin/nologin的用戶列表
grep "nologin$' /etc/passwd | cut -d: -f1
取出默認shell為bash,且其用戶ID號最小的用戶的用戶名
grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1
3、顯示/etc/inittab中以#開頭,且后面跟一個或多個空白字符,而后又跟了任意非空白字符的行;
grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab
4、顯示/etc/inittab中包含了:一個數字:(即兩個冒號中間一個數字)的行;
grep ':[0-9]:' /etc/inittab
5、顯示/boot/grub/grub.conf文件中以一個或多個空白字符開頭的行;
grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf
6、顯示/etc/inittab文件中以一個數字開頭并以一個與開頭數字相同的數字結尾的行;
grep '^\([0-9]\).*\1$' /etc/inittab
7.分析/etc/inittab文件中如下文本中前兩行的特征(每一行中出現在數字必須相同),請寫出可以精 ? ?確找到類似兩行的模式:
l1:1:wait:/etc/rc.d/rc 1
l3:3:wait:/etc/rc.d/rc 3
grep '^l\([0-9]\):\1.*\1$' /etc/inittab
總結
以上是生活随笔為你收集整理的Linux中锚定符号的作用,Linux基础(9)文本处理三剑客之grep的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 济南市在哪能看电影《特别追踪》
- 下一篇: linux+任务默认优先级,uclinu