grep awk sed 練習題

1. 如何把 /etc/passwd 中用戶uid 大於500 的行給打印出來?
awk  -F ':' '$3 > 500' passwd 


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

會打印第一行的第1段,第二行的第2段,第7行的第7段,以及空行


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

egrep -n 'abc|123' passwd

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

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

.表示任意一個字符 *表示零個或多個前面字符 .*表示零個或多個任意字符

+表示篩選一個或1個以上前面字符 ?表示篩選0個或1個前面字符

grep和sed可以使用'.' 、 '*' 和 '.*',但是不能使用'+'和'?'   egrep和awk全部可以使用。


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

指定要過濾字符出現的次數

7. sed有一個選項,可以直接更改文本文件,是哪個選項?
-i


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

刪除以ie結尾的或以“或|或&開頭的字符

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

sed -i 's/[0-9]//g' passwd

sed -i 's/[a-Z]//g' passwd

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

awk -F " '{print $1}' passwd |sort -n |uniq -c |sort -n

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

awk -F '' '$7=="200" && $8="11897"' 1.log

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

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表示打印所有行 

awk -F ':' '$7= 1 {print $0}' 1.txt  將第7段內容更改爲1且打印所有行,此時並不會連帶分隔符一起輸出


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

grep -B1 '/root' passwd  上面一行

grep -A1 '/root' passwd   下面一行

grep -C1 '/root' passwd   上下各一行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章