shellday4

1.grep程序

           linux下有文本处理三剑客 -- grep sed awk

           grep:文本 行过滤工具

           sed:文本 行编辑器(流编辑器)

           awk:报告生成器(做文本输出化格式化)

          grep

                包含三个命令:grep egrep fgrep,它们是用来进行模式()匹配的

         grep用法:

                   grep [option]...PATTERN[fiename]

         grep的常见选项 -- optio

        -E  支持使用扩展的正则表达式(ERE)(regexp)

       -P 使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed grep awk使用的regexp引擎也不相同)

       -i  忽略大小

      -v 进行反选

       -o 仅仅输出匹配的内容 

      --color=auto 语法着色

     -n 显示行号

     -w  匹配固定的单词

PATTERN--正则表达式

       作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊

字符本身含义,就需要\来进行转译

-回顾:文件通配符(globbing)

* ?[][ ^]

1.字符匹配

.  任意一个字符  ?

[ ]范围内的任意一个字符

[ ^]范围外的任意一个字符

 字符类:[:digit:][:alnum:] [ :alpha:] [:lower:]  [:upper:] [:space:] [:punct:]

 

2.次数匹配

*匹配前面的字符0次到无数次

\?匹配前面的字符0次到一次

\+匹配前面的字符1次到n次

\{m,n\}匹配前面的字符m次到n次

\{0,n\}匹配前面的字符0次到n次

\{m,\}匹配前面的字符至少m次

3.位置锚定

    ^铆钉首行

    $锚定行尾

    \b铆钉词首,和锚定词尾

   \>锚定词尾

   \<锚定词首

   <\root\>  rooter

4.分组

 abc*   abcccc   abc我们要看看成一个整体

\(\) 示例:\(abc\)* abcabcabc abcccc

**分组特性:默认情况下,Linux系统会分组指定变量,变量的表示形式\1\2\3...

\(   \( 立秋  \ )已过  \ ),\(香港\)依旧不宁

练习

1.显示/proc/meminfo文件中s开头的行

  grep -i "^s" /proc/meminfo

2.显示/etc/passwd 文件中不以/bin/bash结尾的行

grep -v "bin/bash$" /etc/passwd

3.显示/etc/passwd文件中UID号最大的用户的用户名

sort -n -t: -k3 /etc/passwd | tail -1 | cut -d: -f1

4.如果用户root存在,显示默认的shell程序

grep "^root\>" /etc/passwd &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7
id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7

5、找出/etc/passwd中的两位或三位数   

grep "[0-9]\{2,3\}" /etc/passwd
-w //匹配固定单词
\<[0-9]\{2,3\}\>
\b[0-9]\{2,3\}\b

6.显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行

    grep '' ^[[:space:]] \+.*[^[:space:]] $''  /etc/rc.d/rc.d/rc.sysinit

7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
netstat -tan | grep "LISTEN[[:space:]]*$"
8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行
useradd bash /bin/bash
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
grep "\(^[[:alnum:]]\+\>\).*\1$" /etc/passwd

 

posted @ 2019-08-15 20:34  zcy1234  阅读(141)  评论(0编辑  收藏  举报