shell编程之正则表达式

shell编程之正则表达式

一、正则表达式

 

        1.什么是正则表达式

             它是用来做字符串的分割,匹配,查询,替换等操作的

 

         2.通配符

              a).?表示匹配一个字符 如:asd?=asdv

              b).* 表示匹配所有字符 如:sds*=sdsdasdw

              c).[ ] 表示匹配其中的一个字符 如: sds[ j s ]=sdsj

              d).通配符是用来匹配文件名的,是完全匹配的。常用命令如: ls a?.txt    find /. -name “dsd*”   cp  /tmp/a[sf]    ~/dd;这些命令是不支持正则表达式的

              e).正则表达式是用来匹配文件中的字符串的。是不完全匹配的,是包含匹配,常用命令如:grep  awk sed

 

        3.基础正则表达式

 

字符

BRE/ERE

含义

.

BRE&ERE

匹配任意单个字符(除字符串结束符 NUL)

^

BRE&ERE

匹配行首,如  ^abc,匹配以 abc 开头的字符串

$

BRE&ERE

匹配行尾,如  abc$,匹配以 abc 结尾的字符串

*

BRE&ERE

匹配 0 个或任意多的单个字符,前置字符可以是正则表达式

+

ERE

匹配前面正则表达式的 1 个或多个实例

ERE

匹配前面正则表达式的 0 个或 1 个实例

[...]

BRE&ERE

方括号表达式,匹配方括号内的任一字符,常配合 - 符使用,表示匹配一个连续的范围。 ^ 字符

作为方括号内的第一个字符表示匹配不在方括号内的任意字符

-

BRE&ERE

连字符,在方括号表达式中使用,表示连续字符的范围(范围会因 locale 而有所不同,因此不具可移植性)

{n,m}

ERE

区间表达式,表示匹配在它前面的字符 n 到 m次。其中,n 与 m 的值必须介于 0-RE_DUM

_MAX(含)之间,后者最小值为255

{n}

ERE

表示匹配在这之前的字符 n 次

\{n,m\}

BRE

功能同 {n,m}

\{n\}

BRE

功能同{n}

\

BRE&ERE

转义符

()

ERE

匹配位于方括号括起来的正则表达式群

\( \)

BRE

将\( 与 )\ 之间的模式保存在特殊的“保留空间”中,最多可以存储9个,可以通过后续的转义序列 \n 来匹配保留空间中的模式

\n

BRE

与 \(  \)  结合起来使用,\1匹配第一个子模式、 \2匹配第二个,最多到 \9

|

ERE

匹配位于 | 符号前或后的正则表达式

 

 

二、字符串截取

 

       1.cut命令提取字符串

           a).-f 提取第几列

           b).-d 分割符号(默认的分割符号为指标符号\t)

           c). grep  “/bin/bash” /etc/passwrod | grep -v “root”  |cut -f 1 -d “:” (提取普通登陆用户的用户名)

 

       2.printf命令

          a).标准输出格式

          b). Printf  ‘输出类型 输出格式’  输出文本

               printf ‘%ns’  s表示字符串。 n表示字符串个数

               printf ‘%ni’   i表示整数

               Printf  ‘%m.nf’ f表示浮点类型。 m表示一共多少位。n表示小数点后几位。

 

      3.awk命令

         a).awk ‘条件1{动作1}条件2{动作2}…’ 文件名

         b).如果条件为空。则默认条件满足执行动作。

         c). Awk  ‘{printf $2 “\t” $4 “\n”}’  a.txt

 

     4.sed命令

         a).sed [选项]  ‘[动作]’ 文件名

         b). 选项: -n 如果不加-n会显示整个文本,加了之后,只会显示执行动作的文本

              -e 允许对输入的数据应用多条sed命令编辑

              -i 不加-i,修改之后的数据只会显示在屏幕上,并不会实际修改文件内容。加了之后文件的实际内容会被改变。

         c).动作:a:追加,在当前行后添加一行或多行

                         c: 行替换,用c后面的字符串替换原数据

                          I : 插入,在当前行前插入一行或多行

                         d: 删除,删除指定的行

                         p:打印,输出指定的行

                         s:字符串替换,用一个字符串替换另外一个字符串,格式为 “行范围s/旧字符串/新字符串/g”

 

三、字符处理命令

 

        1.sort命令

             a).sort [选项] 文件名

             b).选项: -f :忽略大小写;-n:以数值排序,默认以字符排序; -r:反向排序; -t :指定分隔符,默认分隔符为制表符; -k n[,m]:按照指定的字段范围排序,从第n行到m行

 

       2.wc命令

           a).wc [选项] 文件名

           b).选项: -l :只统计行数;-w:只统计单词数;-m只统计字符数

           c).没有选项,默认都统计

         

你可能感兴趣的:(shell)