【2018.04.29學習筆記】【正則表達式擴展知識練習】

正則表達式擴展知識練習

做業題:正則表達式

1. 如何把 /etc/passwd 中用戶uid 大於500 的行給打印出來?

uid是文件passwd的第三段,因此:
awk -F ':' '$3>500 {print $0}' passwd

2. awk中 NR,NF兩個變量表示什麼含義?awk -F ':' '{print $NR}' /etc/passwd 會打印出什麼結果出來?

NR表示行號、NF表示行的段數。 打印結果:依次打印passwd的第n行的第n段。

3. 用grep把1.txt文檔中包含'abc'或者‘123’的行過濾出來,並在過濾出來的行前面加上行號.

grep -n 'abc\|123' 1.txt

4. grep -v '^$' 1.txt 這樣會過濾出哪些行?

^$表明空行,因此-v取反,過濾出全部非空行。

5. '.' '' 和 '.' 分別表示什麼含義? '+'和'?'表示什麼含義,這五個符號是否能夠在grep中使用,是否能夠在egrep、sed以及awk中使用?

.表明匹配單個任意字符  *表明匹配0個或多個任意字符 .*表明匹配空字符或者任意字符串
+表明匹配1個或多個任意字符  ?表明匹配0個或者1個任意字符 。
能夠在grep、egrep、sed、awk中使用

6. grep 裏面用到一個 {} ,它用在什麼狀況下?

表示其前面字符連續出現的次數,花括號裏數字,表明出現的次數。如r{3},表示r連續出現3次。

7. sed有一個選項,能夠直接更改文本文件,是哪一個選項?

-i選擇直接修改原文件。

8. sed -i 's/.ie//;s/["|&].//' file 這條命令表示什麼操做呢?

把file文件中ie字符串及他前面的字符串都刪除,"|&號及他後面的字符串都刪除。並修改原文件

9. 如何刪除一個文檔中的全部數字或者字母?

sed 's/[0-9-a-zA-Z]//g' file ,把數字和字母替換成空字符

10. 截取日誌1.log的第一段(以空格爲分隔符), 按數字排序、而後去重,可是須要保留重複的數量如何作?

awk -F ' ' '{print $1}' 1.log |sort -n |uniq -c

11. 使用awk過濾出1.log中第7段(空格分隔)爲'200' 而且第8段爲'11897'的行。

awk -F ' ' '$7=="200" && $8=="11897" {print $0}' 1.log

12. 請比較這兩個命令的異同: grep -v '^[0-9]' 1.txt 和 grep '^[^0-9]' 1.txt

第一個是:以數字開頭的行匹配出來,輸出打印剩餘的行,包括空行。
第二個是:以非數字開頭的行匹配出來並輸出打印,不包括空行。

13. awk中的$0表示什麼?爲何如下兩條命令的$0結果不一致呢? awk -F ':' '{print $0}' 1.txt 和 awk -F ':' '$7=1 {print $0}' 1.txt

$0表示文檔的行以分隔符隔開後的全部段。
第一條命令:打印文件的全部行的全部段,即輸出打印文件全部內容
第二條命令:匹配行的第7段爲1的行,並輸出打印匹配行的全部段。

14. 使用grep過濾某個關鍵詞時,如何把包含關鍵詞的行連同上面一行打印出來,那下面一行呢?同時上面和下面都打印出來呢?

grep -B1 'keyword' file
grep -A1 'keyword' file
grep -C1 'keyword' file
相關文章
相關標籤/搜索