Shell-04

  1. grep程序

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

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

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

        grep:文本行过滤工具  每一行进行过滤

               pattern一般通过通配符和正则表达式两种方式进行匹配

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

               Egrep = grep -E //使用扩展的正则表达式

               Fgrep = fast grep //只使用文件通配符进行匹配 快速文件匹配 不调用正则表达式引擎

        grep的用法:

         grep [option] … PATTERN [filename]

               A*  以A开头的任意文件 *---代表任意字符

               *grep默认使用正则表达式进行文本匹配*

        grep常见选项:

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

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

               -i 忽略大小写

               -v 进行反选

               -o 仅仅输出匹配的内容(默认输出的是匹配到的行)

               --color=auto 语法着色

              -n 显示行号

               -w 匹配固定的单词

  1. 正则表达式----正则表达式PATTERN

作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊字符本身的含义,就需要进行转义()

回顾文件通配符:* ? [] [^ ]

a)       字符匹配

. 代表任意一个字符==?

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

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

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

b)       次数匹配

* 匹配前面相邻的一个字符0次到n次 n—无数次

? 匹配前面相邻的一个字符0次到1次

+ 匹配前面相邻的一个字符1次到n次

{m} 匹配前面相邻的一个字符m次

{m,n} 匹配前面相邻的一个字符m到n次

{0,n} 匹配前面相邻的一个字符0次到n次

{m,}  匹配前面相邻的一个字符至少m次

c)       位置锚定

^ 锚定行首

$ 锚定行尾

 锚定单词词首和锚定词尾

> 锚定词尾

< 锚定词尾

< oot> --- 匹配root这个单词

d)       分组

abc*----c出现0-n次

abc看作整体,就要分组

       () 实例:(abc)* abcabcabc…

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

             

1.grep -i “^s” /pro

2.grep -v “/b$” /e

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

4.alias grep =”grep “^root>”  --color=auto”

  grep “^root>” /etc/passwd | cut -d: -f7

grep “^root>” /etc/passwd &> /dev/null && grep “^root>” /etc/passwd &> /dev/null | cut -d: -f7

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

5.grep “[0-9]{2,3}” /etc/passwd

grep -w “[0-9]{2,3}>” /etc/passwd

grep “<[0-9]{2,3}>”  /etc/passwd

 

/etc/rc.d/rc.sysinit-------centos7没有文件

6. grep “^[[:space:]]+ .*[^[:space:]]$” /etc/rc.d/rc.sysinit

7.netstat -tan  ----- -t tcp -n

  netstat -tan | grep “LISTEN[[:space:]]*$”

 8.

 -s指定用户使用的

 

grep “^(bash).*1$” /etc/passwd

grep “^(bash)>.*1$” /etc/passwd

 

grep “(^[[:alnum:]]+>).*1$”  /etc/passwd

9.IP地址:

       0-255.0-255.0-255.0-255

       0-255

       2 0-4 0-9  2[0-4][0-9]

       2 5 0-5   25[0-5]

       1 0-9 0-9  1[0-9][0-9]

       0 0-9 0-9  [0-9][0-9]

       0 0  0-9  [0-9]

2[0-4][0-9] | 25[0-5] | 1[0-9][0-9] | [0-9][0-9] | [0-9] . 2[0-4][0-9] | 25[0-5] | 1[0-9][0-9] | [0-9][0-9] | [0-9] . 2[0-4][0-9] | 25[0-5] | 1[0-9][0-9] | [0-9][0-9] | [0-9] . 2[0-4][0-9] | 25[0-5] | 1[0-9][0-9] | [0-9][0-9] | [0-9]

 

原文地址:https://www.cnblogs.com/KAJIA1/p/11350901.html