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