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 上下各一行