首页 > 代码库 > 《跟阿铭学Linux》第11章 正则表达式:课后习题与答案

《跟阿铭学Linux》第11章 正则表达式:课后习题与答案

1. 如何把 /etc/passwd 中用户uid 大于500 的行给打印出来?

awk -F ‘:‘ ‘$3 > 500‘ /etc/passwd


2. awk中 NR,NF两个变量表示什么含义?awk -F ‘:‘ ‘{print $NR}‘ /etc/passwd  会打印出什么结果出来?

NR表示行数,NF表示一共有多少段

awk -F ‘:‘ ‘{print $NR}‘ /etc/passwd  会依次打印对应的行数的段,第一行打印第一段,第二行打印第二段... 到了最后就打印空行了


3. 用grep把1.txt文档中包含‘abc‘或者‘123’的行过滤出来,并在过滤出来的行前面加上行号.

grep -E -n ‘abc|123‘ 1.txt


4.  grep  -v ‘^$‘ 1.txt   这样会过滤出哪些行?

会把非空行过滤出来


5. ‘.‘   ‘*‘ 和 ‘.*‘   分别表示什么含义?‘+‘和‘?‘表示什么含义,这五个符号是否可以在grep中使用,是否可以在egrep、sed以及awk中使用?

  • .‘:表示一个任意的字符;

  • *‘:表示前面紧邻的那个字符有零个或多个,即前面紧邻的那个字符可以不存在,也可以有多个;

  • .*‘:表示零个或多个的任意字符,包括空行;

  • +‘:表示前面紧邻的那个字符有一个或多个;

  • ?‘:表示前面紧邻的那个字符有零个或一个;

grep和sed可以使用‘.‘ 、 ‘*‘ 和 ‘.*‘,但是不能使用‘+‘和‘?‘   egrep和awk全部可以使用。


本文出自 “香飘叶子” 博客,请务必保留此出处http://xpleaf.blog.51cto.com/9315560/1894305

《跟阿铭学Linux》第11章 正则表达式:课后习题与答案