系统常见特殊符号、通配符、正则表达式

一、系统常见特殊符号

  1、基础符号系列

  1)$

  ①普通用户命令行提示符      

    [sangha@hasang02-01 ~]$

  ②在awk中,$1表示第一列

    awk '{print $1}' test.txt

  ③取出变量的内容

    echo $LANG

  

  2)!

  ①取反或排除

    awk '!/xiang/' test.txt

    find -type f ! -name "*.txt"|xargs ls -l

  ②命令行中表示取出最近命令

    !awk(不建议用)== history|grep awk

 

  3)|

  管道

 

  4)#

  ①root用户命令提示符

    [root@hasang02-01 ~]# 

  ②注释   

 

  2、引号符号系列

  1)单引号:' '

    输入什么,就输出什么

  2)双引号:" "

    类似单引号,单部分内容会被解析

  3)反引号:` `

    执行引号里面的命令,用于其他命令调用,同$()

 

  3、定向符号系列

  1)小于符号:<

  ①一个小于号:标准输入重定向

    xargs -n2 < test.txt    --- 把文件里的内容按两个一行显示

  ②两个小于号:标准输入重定向

    用于一次性向文件中写入多行内容

 

  2)大于符号:>

  ①一个大于号:标准输出重定向(会清空原文件内容)

    echo "abc" >test.txt

  ②两个大于号:标准输出追加重定向(追加到文件最后一行)

    echo "abc" >>test.txt

 

  3)错误重定向:2>

  ①错误输出重定向:ifconfi 2>test.txt

  ②错误输出追加重定向:ifconfi 2>>test.txt

  ③把错误的正确的都追加输入到指定文件:ifconfig &>>test.txt 或 ifconfg >>test.txt 2>&1

    

  4、路径信息系列

  1)点:.

  ①表示当前目录:cd .

  ②加载(==source):. /etc/profile

  2)点点:..

  表示上一层目录:cd ..

  3)波浪线:~

  表示当前用户家目录:cd ~

 

  5、逻辑符号系列

  1)两个and符号:&&

  前面的命令执行成功,再执行后面的命令

  2)两根竖线:||

  前面的命令执行不成功,才执行后面的命令

  3)分号: ;

  分别执行两个命令

 

二、通配符

  通配符多用于处理文件名称信息,find ls -l 常用

  1、星号:*

  表示匹配所有内容

  示例1:找出以.txt结尾的文件

  find /test -type f -name "*.txt"

  示例2:找出包含字符串test的文件

  find /test -type f -name "*test*"

  示例3:找出以test开头.txt结尾的文件

  find /test -type f -name "test*.txt"

 

  2、大括号:{}

  表示构造出一个序列

  ①单个连续序列

  echo {1..10} ; echo {a..z}

  ②单个不连续序列

  echo {1..10..2} == echo {1,3,5,7,9,}

  ③多个连续序列

  echo {1..3}{1..3}

  ④多个不连续序列

  echo {1,3,4}{2,3}

  ⑤单个字符串和序列组合

  echo A{A,B} ; echo A{,B}

  示例1:一次性创造多个文件

  touch stu{1..10}.txt

  示例2:文件备份

  copy test.txt{,.bak}

 

三、基础正则表达式(basic regular expression BRE)

  正则表达式多用于处理文件内容信息,三剑客命令和各种计算机语言常用

  1.尖号:^

  表示以什么开头的信息:grep '^m' test.txt

  

  2.美元符号:$

  找出以什么结尾的信息:grep 'm$' test.txt

 

  3.尖号加美元符号:^$

  匹配空行信息:grep -v '^$' test.txt

 

  4.一个点:.

  匹配任意一个且只有一个字符信息(不能匹配空行):grep -o '.$' test.txt

  

  5.星号:*

  匹配0个或多个连续出现的字符信息,会匹配出找不到的内容,预支匹配,默认将所有内容显示出来:grep '0*' test.txt

 

  6.点星:.*

  匹配文件中所有的内容(可以匹配空行信息):grep '.*' test.txt

  ①找出文件以m开头,一行中的所有信息:grep '^m.*' test.txt

  ②找出文件以m开头,以m结尾的信息:grep '^m.*m$' test.txt

 

  7.转译符号:\

  可以将有意义的符号,转译成没有意义的符号,也可以将没有意义的符号,转译成有意义的符号。

  ①找出以.结尾的行的信息:grep '\.$' test.txt

  ②将文件一行信息,转换成一列显示:tr " " "\n" <test.txt

  

  8.中括号:[abc]

  表示分别匹配中括号里的内容,即匹配a或b或c:grep '[abc]' test.txt

  示例1:找出不包含数字或大写字母的行:grep -v '[0-9A-Z]' test.txt 

  

  9.中括号加尖号:[^abc]

  排除/不匹配指定字符信息:grep '[^abc]' test.txt

  示例1:找出不以a或b或c开头的行

  grep '^[^abc]' test.txt

  示例2:找出不以空格结尾的行

  grep '[^ ]$' test.txt

 

四、扩展正则表达式(extended regular expression ERE)

  1.加号:+

  +前面字符出现一次或一次以上,只显示包含对应字符串的行(对比*)

  egrep '[0-9]+' test.txt

 

  2.竖线:|

  匹配多个满足条件的信息:egrep 'a|b|c' test.txt

 

  3.小括号:()

  匹配一个整体信息:grep 'a(b|c)d' test.txt

  后项引用前面括号里的内容(多与sed连用):echo 123456|sed 's#(..)(..)(..)#<\2><\3><1>#g'

 

  4.大括号:{}

  指定匹配前面一个字符出现了多少次

  1){n,m} :指定前面一个字符连续最少出现n次,最多出现m次

  2){n}:指定前面一个字符连续出现了n次

  3){n,}:指定前面一个字符连续出现了最少n次

  4){,m}:指定前面一个字符连续出现了最多m次

 

  5.问号:?

  匹配前一个字符出现了1次或0次:egrep 'a?' test.txt

 

五、基础正则表达式和扩展正则表达式的区别

  基础正则命令:grep  sed  awk

  扩展正则命令:egrep     sed -r    awk

  如果一定要用基础正则命令来使用扩展正则表达式的话,必须在扩展正则表达式前面加上转译符 \

  如:grep 'a\|b' test.txt  ;   sed -n  "/3306\|1521/p" /etc/services

 

posted @ 2018-07-25 20:02  艾玛1  阅读(2271)  评论(0编辑  收藏  举报