第一部分:grep 文本搜索
1:请解释命令 grep -i "error" server.log 中选项 -i 的作用。
-i 忽略大小写,匹配时不区分大写、小写,error、ERROR、Error 都能匹配上。
2:命令 grep -n "main" program.c 会输出什么额外信息?
-n 会额外输出匹配行的行号,每行结果前面带上行编号。
3:我想统计文件中匹配行的数量而不是显示内容,使用了 grep -c "pattern" file.txt,请解释其输出。
文件里能匹配上 pattern 的总行数量。
4:请解释 grep -v "success" access.log 的含义,它筛选出了什么样的内容?
-v 反向匹配。筛选出不包含 success的所有行。
5:在命令 grep -w "is" text.txt 中,-w 选项起到了什么关键作用?
-w 匹配完整单词。
6:如果要在一个目录及其所有子目录中搜索内容,使用 grep -r "function" ./src,请说明 -r 的含义。
-r 递归搜索。遍历指定目录,同时向下查找所有子目录里面的文件。
7:命令 grep -l "TODO" *.py 的输出结果只包含了什么信息?
只输出存在匹配内容的文件名,不会打印文件内匹配到的文本;不匹配的文件不显示。
8:请解释 grep -C 3 "error" log.txt 中 -C 3 的具体展示效果。
打印匹配到 error 的那一行,同时额外显示该行上方 3 行、下方 3 行上下文。
9:grep -q "user" /etc/passwd && echo "Exist",这里的 -q 是什么模式?通常用于什么场景?
-q 静默模式,不会输出任何文本,只返回退出状态码。场景:只想要判断是否存在匹配内容,不需要展示内容,常搭配 && / || 做条件判断。
10:正则表达式 grep "^root" /etc/passwd 中的 ^ 符号代表什么?
正则^代表行开头,只匹配以 root 作为一行起始内容的文本行。
11:正则表达式 grep "bash$" /etc/passwd 中的 $ 符号代表什么?
代表行结尾 **,匹配以 bash 结束的文本行。
12:请解释 grep "t.t" file.txt 中点号 . 的匹配规则。
正则里.可以匹配任意单个字符;t 和 t 中间不管是什么单个字符都能匹配(tat、t5t)。
13:在 grep "log*" file.txt 中,星号 * 修饰的是什么?它代表什么数量?
*修饰它前面紧邻的字符 g,代表:g 出现 0 次或者多次。可以匹配 lo(g 出现 0 次)、log、logg、loggg……
14:命令 grep "[0-9]" data.txt 匹配的是什么样的字符?
[0-9]匹配任意单个数字字符(0~9)。
15:grep "[^a-z]" file.txt 中的 ^ 在方括号内表示什么意思?
方括号[]内部开头的^代表取反,匹配任意不是小写英文字母的字符。
16:我们要使用扩展正则表达式(如 + 或 ?),在不使用 egrep 的情况下,grep 需要加什么选项?
给 grep 加上 -E 参数,启用扩展正则表达式。
17:egrep "go+d" file.txt 中的 + 号与 * 号有什么区别?
*:前面字符出现 0 次或多次;+:前面字符至少出现 1 次,最多不限。go+d 匹配 god、good、goood;不能匹配 gd(o 不能省略)。
18:请解释 egrep "error|warning" log.txt 中竖线 | 的作用。
竖线|代表或,匹配包含 error 或者 warning 任意一个内容的行。
19:命令 egrep "(ab)+" file.txt 匹配的模式是怎样的?
括号把 ab 打包成一组;+表示这一组至少出现一次。匹配:ab、abab、ababab……
20:grep "40[34]" access.log 这个命令可以匹配哪些HTTP状态码?
匹配 403、404 两个 HTTP 状态码。
21:在正则表达式 a{2,5} 中,花括号内的数字限制了什么?
限制前面字符 a连续出现次数:最少 2 次,最多 5 次;aa、aaa、aaaa、aaaaa 都匹配。
22:grep "^$" file.txt 这一组合通常用来查找文件中的什么内容?
^行开头,$行结尾,中间没有字符,用来查找文件里的空行 **。
23:解释命令 grep --color=always "keyword" file.txt 的视觉效果。
把匹配成功的 keyword 文字,用彩色高亮显示;always 代表无论输出到终端还是重定向文件,都保留颜色标记。
24:如果要查找IP地址,模式 [0-9]{1,3}\. 代表IP地址的哪一部分结构?
匹配 1~3 位数字加上一个点,对应 IP 地址里**每一段数字和后面的小数点**(例如 192. 、168.)