linux日志查看面试题,Linux 运维面试题 三剑客(sed awk grep)整理
一. 三劍客-基礎部分題目
1. 選擇
1.在給定文件中查找與條件相符字符串的命令及查找某個目錄下相應文件的命令為:(多選)(AC)A:grep
B:gzip
C:find
D:sort
2.在給定文件中查找與設定條件相符字符串的命令為(A)A:grep
B:gzip
C:find
D:sort
3.以下哪個命令可以從文本文件的每一行中截取指定內容的數據。(D)A:cp
B:dd
C:fmt
D:cut
4.下面表述錯誤的是(D)A.表示開頭,如^abc表示以abc開頭的
B. 表示結尾如abc表示以abc為結尾的
C.?表示前一個字符出現0或1次,如ab?c表示a與c之間可有0或1個b存在
D.+ 表示前一個字符出現0或多次。如ab+c表示a與c之間可有0或多個b存在
2. 填空
1.Unix中在當前目錄下所有.cc 的文件中找到含有“asiainfo”內容的文件,命令為find??.?-type?f?-name?"*.cc"?|?xargs?grep??'asiainfo'find?.?-type?f?-name?"*.cc"?-exec?grep?"asiainfo"?{}?\;grep?"asiainfo"?`find?.?-type?f?-name?"*.cc"`
2.使用AWK指定分隔符的參數是_______-F _,-vFS=awk?'BEGIN{FS=":"}{print?$1,$3}'?/etc/passwd
3. 簡答
1.找出當前目錄下包含127.0.0.1關鍵字的文件?方法1grep?"127.0.0.1"?`?find?-type?f?`sed?-n?'/127.0.0.1/p'?`??find?-type?f`awk?'/127.0.0.1/'?`??find?-type?f`方法2find?-type?f?|?xargs?grep?"127.0.0.1"find?-type?f?|?xargs?sed?-n?'/127.0.0.1/p'find?-type?f?|?xargs?awk?'/127.0.0.1/'方法3find?-type?f?-exec?grep?"127.0.0.1"?{}?\
find?-type?f?-exec?sed?-n?'/127.0.0.1/p'??{}?\
find?-type?f?-exec?awk?'/127.0.0.1/'?{}?\
2.刪除/顯示1.txt文件第3行到第10行的內容?sed?-n?'3,10p'?1.txt
awk?'3<=NR<=10'?1.txt
awk?'NR==3,NR==10'?1.txt
head?10.txt?|?tail?-8
3.使用awk取出/etc/passwd第一列數據也就是取出用戶名。awk?-F?:?'{print?$1}'?/etc/passwd
cut?-d?:?f1?/etc/passwd
sed?-n?'s#:.*##g'?/etc/passwd
awk?'{gsub(/:.*/,"");print}'?/etc/passwd
sed?-r?'s#(^[^:]+).*#\1#g'?/etc/passwd
4.用命令行更改config.txt文件,把里面所有的“name”更改為“address”sed?-i?'s#name#address#g'?config.txt
awk?'{gsub(/name/,"address"),print}'?config.txt
vi/vim進行編輯:
:%s#name#address#g
5.寫出查詢file.txt以abc結尾的行egrep?"abc$"?file.txt
sed?-n?'/abc$/p'?file.txt
awk?'/abc$/'?file.txt
6.刪除file.txt文件中的空行sed?'/^$/d'?file.txt
grep?-v?'^$'?file.txt
awk?'!/^$/'?file.txt-----空行可能空格
egrep?-v?"^$|^?+$"?file.txt
grep?-v?'^?*$'?file.txt
sed?-n?'/^?*$/d'?file.txt
awk?'/^?*$/'?file.txt
7.打印file.txt文件中的第10行sed?-n?'10p'?file.txt
awk?'NR==10'?file.txt
head?file.txt?|?tail?-1
8.刪除/etc/fstab文件中所有以#開頭的行的行首的# 號及#后面的所有空白字符;egrep?-v?'^$|^#'?/etc/fstab
awk?'/^#/{gsub(/^#|[?\t]+/,""),print}'?/etc/fstab
sed?-r?'/^#/s@^#|[?\t]+@@g'?/etc/fstab
情況2awk?'/^#/{gsub(^#[?\t]+,""),print}'?/etc/fstab
sed?-r?'/^#/s@^#[?\t]+@@g'?/etc/fstab
9.查找最后創建時間是3天前,后綴是*.log的文件并刪除(三種方法)find?-type?f??-mtime?+3?-name?"*.log"?-exec?rm?-f?{}?\;find?-type?f?-mtime?+3?-name?"*.log"?-exec?rm?-f?{}?+find?-type?f?-mtimime?+3?-name?"*.log"?|?xargs?rm?-f
rm?-f?`find?-type?f?-mtime?+3?-name?"*.log"`rm?-f?$(find?-type?f?-mtime?+3?-name?"*.log")find?-type?f?-mtime?+3?-name?"*.log"?--delete
10.使用sed命令打印出文件的第一行到第三行sed?'1,3p'?file.txt
awk?'NR==1,NR==3'?file.txt
head?-3?file.txt
11.在/var/sync/log/cef_watchd-20080424.1og文件中查找大小寫不敏感“mysql"字符串中的命令是grep?-i?'mysql'?/var/sync/log/cef_watchd-20080424.1og
12.為了在/var/sync/log 目錄中查找更改時間在5日以前的文件井刪除它們,linux命令是rm?-f?`find?/var/sync/log?-type?f?-ctime?+5?`rm?-f?$(find?/var/sync/log?-type?f?-ctime?+5)find?/var/sync/log?-type?f?-ctime?+5?|?xargs?rm?-f?{}?\;find?/var/sync/log?-type?f?-ctime?+5?-exec?rm?-f
find?/var/sync/log?-type?f?-ctime?+5?--delete
13.把data目錄及其子目錄下所有以擴展名.txt結尾的文件中包含oldgirl的字符串全部替換為oldboy.find?/data?-type?-name?".txt"?|?xargs?sed?-n?'s#oldgirl#oldboy#g'find?/data?-type?-name?".txt"?|?xargs?awk?'{gsub(/oldgirl/,"oldboy"),print}'
14.寫出刪除abc.txt文件中的空行sed?'/^$/d'?abc.txt
awk?'{gsbu(/^$/,""),print}'?abc.txt
grep?-v?"^$"?abc.txt
15.查看linux服務器ip的命令,同時只顯示包含ip所在的行打印出來ifconfig?ens33?|?awk?-F?"[?]+"?'NR==2{print?$3}'ifconfig?ens33?|?sed?-rn?'2s#^.*inet?(.*)?netmask?.*$#\1#gp'hostname?-I
16.有文件file1請用shell查詢file1里面空行的所在行號grep?-n?"^$"?file.txt
awk?'/^$/{print?NR,$0}'?file.txt查詢file1以abc結尾的行grep?"abc$"?file.txt
sed?'/abc$/'?file.txt
awk?'/abc$/'?file.txt打印file文件第一行到第三行sed?'1,3p'?file.txt
awk?'NR==1,NR==3'?file.txt
head?-3?file.txt
17.顯示file文件里匹配foo字串那行以及上下5行、顯示foo及前5行、顯示foo及后5行grep?-B?5?"FOO"?file.txt
grep?-A?5?"FOO"?file.txt
grep?-C?5?"FOO"?file.txt
18.當前系統中沒有任何文本編輯器(vi,emacs,vim,edit等),如何過來掉注釋行和空行查看/etc/ssh/sshd_config文件
例如:文件名為“filename”,文件內容如下:#This?is?a?comments-1#This?is?a?comments-2This?is?a?comments-1This?is?a?comments-2This?is?a?comments-3This?is?a?comments-4egrep?-v?"^$|^#"?/etc/ssh/sshd_config/filename.txt
sed?-r?'/^$|^#/d'?/etc/ssh/sshd_config/filename.txt
sed?-nr?'/^$|^#/!p'?/etc/ssh/sshd_config/filename.txt
awk?'!/^$|^#/'?/etc/ssh/sshd_config/filename.txt
19.查找file.log文件中的包含關鍵字“helloworld”的內容,及其上下兩行的內容從定向保存到1.txt。請寫出命令grep??"hellword"?-C?2?file.log?>>1.txt
20.echo "ABCDEF abtdefg" |sed -i s/c/t/g 這條命令是否正確?如若正確可能會顯示什么樣的結果?不正確,-i是針對文件的。
21.查找文件中1到20行之間,同時將"aaa"替換為"AAA","ddd"替換"DDD"awk?'NR==1,NR==20{gsub(/aaa/,"AAA");gsub(/ddd/),"DDD"}1'?file.txt
sed?-n?'1,20{s#aaa#AAA#g;s#ddd#DDD#g}'?file.txt
sed?'1,20p'??file.txt?|tr?"ad"?"AD"?sed?"1,20y/ad/AD/"?file.txt
sed?"1,20s#[ad]#\U?g"?file.txt
awk?'NR==1,NR==20{print?toupper($0)}'?file.txt
22.用awk獲取文件中第三行的倒數第二列字段awk?'NR==3{print?$(NR-1)}'?file.txt
二. 進階題目:
1.利用sed命令將test.txt中所有的回車替換成空格?tr?"\n"?"?"?test.txt
2.找出ifconfig命令結果中的1-255之間的數值;ifconfig?|?egrep?-o?'[0-9]+'|awk?'$0>1?&&?$0<=255'?#-o表示僅僅輸出匹配的內容
ifconfig?|?awk?-vRS="[^0-9]+"?'$0>1??&&?$0?<255'
3.文件內容排序、文件行取唯一值的命令分別是?sort
uniq
4.用awk獲取文件中第三行的倒數第二列字段awk?'NR==3{print?$(NR-1)}'?file.txt
5.awk是一個很強大的文本處理工具,請使用awk統計當前主機的并發訪問量netstat?-ant|awk?'/^tcp/{stat[$NF]++}END{for(?k?in?stat)?print?k,stat[k]}'ss?-ant?|?'{stat[$NF]++}END{for(?k?in?stat)?print?k,stat[k]}'
6.有一個文件nginx.log,請用awk提取時間(HH:MM),文件內容如下:183.250.220.178|-l[20/jul/2017:10:35:14?+0800]|POST?/audiosearch/search
HTTP/1.1|200|54|-lDalvik/1.6.0(linux;U;Android?4,4,4;Konka?Android?TV?638Build/KTU84P)|-l-[5.069|5.001,0.005|www.kuyun.com|8771|172.21.19.67:8084,172.21.19.66:8084]183.250.220.178|-l[20/jul/2017:10:35:14?+0800]|POST?/audiosearch/search
HTTP/1.1|200|54|-lDalvik/1.6.0(linux;U;Android?4,4,4;Konka?Android?TV?638Build/KTU84P)|-l-[5.069|5.001,0.005|www.kuyun.com|8771|172.21.19.67:8084,172.21.19.66:8084]awk?-F?"2017:|:14"?'{print?$2}'?nginx.txt
awk?-F?"....:|:.."?'{print?$2}'?nginx.txt
7.從a.log文件中提取包含“WARNING”或“FATAL”,同時不包含“IGNOR”行,然后,提取以“:”分割的第五個字段awk?-F?:?'/WARING|FATAL/?&&!/IGNOR/{print?$5}'
三. 老牛逼題目
1.統計apache訪問日志流量排名前10個IPawk?'{IP[$1]+=$10}END{for?(k?in?IP)?print?k,IP[K]}'?access.log|?sort?-nrk2|?head?-10
2.統計出apache的access.log 中訪問最多的5個ipawk?'{IP[$1]++}END{for?(k?in?IP)?print?k,IP[K]}'?access.log|?sort?-nrk2|?head?-5
3.這條linux命令的含義:netstat -n |awk '/^tcp/ {++h{$NF}} END {for{a in h } print a,h[a] }'tcp?狀態?每種狀態的數量。
4.使用awk分析日志(最后一個字段是IP,統計訪問量前十的IP,并進行排序)awk?'{IP[$NF]++}END{for?(k?in?IP)?print?k,IP[K]}'?access.log?|?sort?-nrk2?|?head
awk?'{h[$NF]++}END{for(p?in?h)print?p,h[p]}'?access.log?|sort?-rnk2|head
awk?'{print?$NF}'?access.log|sort?|uniq?-c|sort?-rnk2|head
總結
以上是生活随笔為你收集整理的linux日志查看面试题,Linux 运维面试题 三剑客(sed awk grep)整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下制作动图的软件,Linux
- 下一篇: linux安装nginx源码,CentO