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

本文详细介绍了Linux系统中常见的特殊符号、引号、定向符号等的使用方法,并对通配符、基础及扩展正则表达式的应用进行了深入讲解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、系统常见特殊符号

  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

 

转载于:https://www.cnblogs.com/yaozhiyuan/p/9368022.html

<think>好的,用户问的是关于通配符正则表达式。首先,我需要明确通配符正则表达式之间的区别和联系。通配符通常指的是像*和?这样的符号,常用于文件名匹配,比如在命令行中使用ls *.txt来匹配所有以txt结尾的文件。而正则表达式则更强大,用于复杂的文本模式匹配。 接下来,用户可能想知道如何在正则表达式中使用类似通配符的符号。比如,*在正则中表示前面的字符重复零次或多次,而?表示一次或零次。但用户可能将通配符的*和正则中的*混淆了,所以需要解释清楚两者的不同。 然后,我需要举一些例子说明如何将通配符转换为正则表达式。例如,文件名通配符中的*对应正则的.*,而?对应.。同时,可能需要提醒用户注意转义的问题,比如在正则中某些字符需要转义才能使用,比如.需要用\.来匹配实际的点号。 另外,用户可能的应用场景是什么?可能是想在编程中使用正则表达式来处理类似通配符的模式,或者是在不同的工具中(如grep、sed)进行文本处理。需要给出具体的例子,比如将“file?.txt”转换为正则“file.t xt”,或者“data_*.csv”转换为“data_.*.csv”。 还要考虑用户可能的误区,比如直接复制通配符正则表达式中导致不正确的匹配,这时候需要指出正确的转换方法。同时,是否需要提到其他通配符,比如在某些系统中使用的[abc]范围匹配,在正则中也是类似的,但可能有更多的选项,比如[0-9]或[a-zA-Z]。 最后,总结通配符和正则的主要区别,强调正则表达式的灵活性和强大功能,同时提供转换时的注意事项。确保回答清晰,示例准确,并且覆盖用户可能的实际需求。</think>通配符(如 `*` 和 `?`)在正则表达式中有不同的含义,需根据具体需求进行转换: 1. **常见通配符与正则对应关系**: - `*`(匹配任意数量字符) → 正则表达式需写为 `.*`(`.` 匹配任意单个字符,`*` 表示重复零次或多次) - `?`(匹配单个字符) → 正则表达式写为 `.` 2. **文件名通配符转正则示例**: ```regex # 文件名通配符 "file?.txt" → 正则表达式 ^file\.txt$ # 匹配 file1.txt, fileA.txt 等 # 文件名通配符 "data_*.csv" → 正则表达式 ^data_.*\.csv$ # 匹配 data_abc.csv, data_123.csv 等 ``` 3. **注意事项**: - 正则表达式中 `.` 默认不匹配换行符,需使用 `re.DOTALL` 标志(Python)或 `s` 修饰符(其他语言)扩展匹配范围 - 特殊字符(如 `.` `^` `$`)需用反斜杠转义 `\.` `\^` `\$`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值