1. 如何把 /etc/passwd 中用户uid 大于500 的行给打印出来?
答:awk -F ':' '$3>500' /etc/passwd
2. awk中 NR,NF两个变量表示什么含义?awk -F ':' '{print $NR}' /etc/passwd 会打印出什么结果出来?
答:NR行数 NF以分隔符分隔后一共有多少段
会打印出第一行的$1,第二行的$2,第三行的$3,第四行的$4,第五行的$5,第六行的$6,第七行的$7,其余行均为空行。
3. 用grep把1.txt文档中包含'abc'或者‘123’的行过滤出来,并在过滤出来的行前面加上行号.
答:egrep -n 'abc|123' 1.txt
4. grep -v '^$' 1.txt 这样会过滤出哪些行?
答:过滤非空行
在正则表达式中, “^” 表示行的开始, “$” 表示行的结尾,那么空行则可以用 “^$” 表示
5. '.' '*' 和 '.*' 分别表示什么含义?'+'和'?'表示什么含义,这五个符号是否可以在grep中使用,是否可以在egrep、sed以及awk中使用?
答:. 表示任意一个字符 * 表示零个或多个前面的字符 ‘.*’ 表示零个或多个任意字符,空行也包含在内 +刷选1个或1个以上前面字符 ?刷选零个或1个前面字符
grep和sed可以使用'.' 、 '*' 和 '.*',但是不能使用'+'和'?' egrep和awk全部可以使用。
6. grep 里面用到一个 {} ,它用在什么情况下?
答:eg:
grep 'o\{2\}' /etc/passwd
意思是表示包含有两个o 即 ‘oo’ 的行。{ }左右都需要加上脱意字符 ‘\’,另外,使用{ }我们还可以表示一个范围的,具体格式是 ‘{n1,n2}’ 其中n1<n2,表示重复n1到n2次前面的字符,n2还可以为空,则表示大于等于n1次。
7. sed有一个选项,可以直接更改文本文件,是哪个选项?
答:-i
8. sed -i 's/.*ie//;s/["|&].*//' file 这条命令表示什么操作呢?
答:该命令由;分割了两部分,首先第一部分表示把file中出现的以ie结尾的字符串删除,
第二部分是把file中以"或|或&开头的字符串删除
9. 如何删除一个文档中的所有数字或者字母?
答:sed -i 's/[0-9]//g' 1.txt sed -i 's/[a-Z]//g' 1.txt
10. 截取日志1.log的第一段(以空格为分隔符),按数字排序、然后去重,但是需要保留重复的数量如何做?
awk '{print $1}' 1.log |sort -n|uniq -c
11. 使用awk过滤出1.log中第7段(空格分隔)为'200' 并且第8段为'11897'的行。
awk '$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 打印非数字开头的行,simkai;font-size:18px;line-height:21px;background-color:#ffffff;">但不输出空行
这个 ‘[ ]’ 的应用,如果是数字的话就用[0-9]这样的形式,当然有时候也可以用这样的形式[15]即只含有1或者5,注意,它不会认为是15。如果要过滤出数字以及大小写字母则要这样写[0-9a-zA-Z]。另外[ ]还有一种形式,就是[^字符] 表示除[ ]内的字符之外的字符。
13. awk中的$0表示什么?为什么以下两条命令的$0结果不一致呢? awk -F ':' '{print $0}' 1.txt 和 awk -F ':' '$7=1 {print $0}' 1.txt
答;$0表示整行 前面是把每行打印出来 后面是在每行的第7段赋值为1 并打印整行
14. 使用grep过滤某个关键词时,如何把包含关键词的行连同上面一行打印出来,那下面一行呢?同时上面和下面都打印出来呢?
答:grep -B1 上面的行 grep -A1 下面的行 grep -C1 上下均打印