关 于 正 则 表 达 式 的 类 习 题
1. 如何把 /etc/passwd 中用戶uid 大于500 的行給打印出來(lái)?
? ?awk -F ':' '$3 > 500' /etc/passwd
2. awk中 NR,NF兩個(gè)變量表示什么含義?awk -F ':' '{print $NR}' /etc/passwd ?會(huì)打印出什么結(jié)果出來(lái)?
? ? NR表示行數(shù),NF表示一共有多少段
? ? awk -F ':' '{print $NR}' /etc/passwd ?會(huì)依次打印對(duì)應(yīng)的行數(shù)的段,第一行打印第一段,第
? ? 二 ?行打印第二段... 到了最后就打印空行了
? ? awk -F ':' '{print $NF}' /etc/passwd 只打印最后一段
3. 用grep把1.txt文檔中包含'abc'或者‘123’的行過(guò)濾出來(lái),并在過(guò)濾出來(lái)的行前面加上行號(hào).
? ?grep -E -n 'abc|123' 1.txt
4. ?grep ?-v '^$' 1.txt ? 這樣會(huì)過(guò)濾出哪些行?
? ? 會(huì)把非空行過(guò)濾出來(lái)
5. '.' ? '*' 和 '.*' ? 分別表示什么含義?'+'和'?'表示什么含義,這五個(gè)符號(hào)是否可以在grep中使用,是否可以在egrep、sed以及awk中使用?
'.' ?表示一個(gè)任意的字符;?
'*' ?表示前面緊鄰的那個(gè)字符有零個(gè)或多個(gè),即前面緊鄰的那個(gè)字符可以不存在,也可以有多個(gè);
'.*' 表示零個(gè)或多個(gè)的任意字符,包括空行;
'+' ?表示前面緊鄰的那個(gè)字符有一個(gè)或多個(gè);
'?' ?表示前面緊鄰的那個(gè)字符有零個(gè)或一個(gè);
grep和sed可以使用'.' 、 '*' 和 '.*',但是不能使用'+'和'?' ? egrep和awk全部可以使用。
6. grep 里面用到一個(gè) {} ,它用在什么情況下?
{ },其內(nèi)部為數(shù)字,表示前面的字符要重復(fù)的次數(shù)。數(shù)字可以是單個(gè)數(shù)字{n},也可以是一個(gè)區(qū)間{n1,n2}。注意,在字符串中,{ }左右都需要加上脫意字符 ‘\’。
例如, grep ?'o\{3\}' /etc/passwd ? ? ? //輸出有3連續(xù)的'o'的行
7. sed有一個(gè)選項(xiàng),可以直接更改文本文件,是哪個(gè)選項(xiàng)?
? ? -i
8. sed -i 's/.*ie//;s/["|&].*//' file ?這條命令表示什么操作呢?
? ?該命令由;分割了兩部分,首先第一部分表示把file中出現(xiàn)的以ie結(jié)尾的字符串刪除,
? ?第二部分是把file中以"或|或&開(kāi)頭的字符串刪除
9. 如何刪除一個(gè)文檔中的所有數(shù)字或者字母?
? ?刪除所有數(shù)字: sed -i 's/[0-9]//g' file
? ?刪除所有字母: sed -i 's/[a-Z]//g' file
10. ?截取日志1.log的第一段(以空格為分隔符), 按數(shù)字排序、然后去重,但是需要保留重復(fù)的數(shù)量如何做?
? ?awk '{print $1}' 1.log |sort -n|uniq -c|sort -n
11. 使用awk過(guò)濾出1.log中第7段(空格分隔)為'200' 并且第8段為'11897'的行。
? ?awk '$7 == "200" && $8 == "11897"' 1.log
12. ?請(qǐng)比較這兩個(gè)命令的異同: grep -v '^[0-9]' 1.txt 和 grep ?'^[^0-9]' 1.txt
? ?grep -v '^[0-9]' 1.txt ? ? ?//輸出文件中不以數(shù)字開(kāi)頭的行,但輸出空行
? ?grep ?'^[^0-9]' 1.txt ? ? ? //輸出文件中不以數(shù)字開(kāi)頭的行,但不輸出空行
13. awk中的$0表示什么?為什么以下兩條命令的$0結(jié)果不一致呢? awk -F ':' '{print $0}' 1.txt ?和 awk -F ':' '$7=1 {print $0}' 1.txt
? ?awk -F ':' '{print $0}' 1.txt ? ? ? ?//打印所有的行 ,即整個(gè)記錄
? ?awk -F ':' '$7=1 {print $0}' 1.txt ? //以冒號(hào)為分隔符,輸出時(shí)將每行的第七段的內(nèi)容更改
? ?為1,并打印所有的行,此時(shí)并不會(huì)連帶分隔符一起輸出
14. 使用grep過(guò)濾某個(gè)關(guān)鍵詞時(shí),如何把包含關(guān)鍵詞的行連同上面一行打印出來(lái),那下面一行呢?同時(shí)上面和下面都打印出來(lái)呢?
grep -B1 上面一行
grep -A1 下面一行
grep -C1 上下各一行
轉(zhuǎn)載于:https://blog.51cto.com/tengxiansheng/1705894
總結(jié)
以上是生活随笔為你收集整理的关 于 正 则 表 达 式 的 类 习 题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Cesium 4490 解决方案
- 下一篇: union 和 union all