ten——系统正则符号

这篇博客详细介绍了Linux系统中的各种正则符号,包括基础符号如提示符、引号、路径、定向符号,以及逻辑符号、通配符和正则表达式中的特殊符号。内容涵盖标准输出重定向、错误处理、文件路径切换、历史命令调用、正则匹配技巧等,旨在帮助读者理解和掌握这些符号在实际操作中的运用。

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

系统正则符号概念
系统基础符号
基础符号系列:
a 表示注释信息
b 表示登录用户信息 (root用户登录 提示符#)

$
a 表示登录用户信息 (普通用户登录 提示符$)

b 表示调取变量信息 $oldboy

c 表示调取列信息 awk ‘{print $1}’ /oldboy/oldboy.txt

!
a 表示强制意思 :wq! :q!
b 表示取反操作 find /oldboy -type f ! -path /oldboy/oldboy01*/
c 用于调取历史命令 !历史命令信息

|
将前一个命令执行的结果,交给后面命令处理

引号符号系列:
’ ’
单引号: 所见即所得

" "
双引号: 会将部分符号信息做解析处理

没引号
和双引号功能类似 识别序列信息

``
反引号: 等价于$() 将命令执行的结果交给外面的命令处理

路径符号系列:
~
快速切换到用户家目录 cd ~/cd

快速切换到上一次所在路径 cd -/cd $OLDPWD

.
切换到当前所在路径 cd .


切换到一级所在路径 cd … / cd …/…/

定向符号系列:
1>/> : 标准输出重定向
1>>/>> : 标准输出追加重定向
2> : 错误输出重定向
2>> : 错误输出追加重定向
错误和正确信息统一放置在一个文件:
echo oldboy >>/oldboy/ok.log 2>&1
echo oldboy &>>/oldboy/ok.log

< : 标准输入重定向
tr ‘a-z’ ‘A-Z’ </oldboy/oldboy.txt
xargs -n2 </oldboy/oldboy.txt

<< : 标准输入追加重定向
cat >>/oldboy.txt<<EOF

逻辑符号系列:
&&: 表示前一个命令执行成功,再执行后面命令
mkdir /oldboy && touch /oldboy/oldboy01.txt

||: 表示前一个命令执行失败,在执行后面命令
rmx /oldboy || touch /oldboy/oldboy02.txt
; 多个命令同时执行
系统通配符号:

  • — 匹配所有内容
    ls -l /oldboy/.txt — 匹配以.txt结尾信息进行详细显示
    rm -rf /oldboy/
    — 删除oldboy目录中所有信息, 但是默认无法删除隐藏文件
    rm -f /oldboy/.old*.txt — 删除以old开头 .txt结尾的所有隐藏文件
    find /oldboy -name “.txt"
    find /oldboy -name "oldboy

    find /oldboy -name “old*.txt”

{} — 匹配序列信息
数字序列: — {1…9}
字母序列: — {a…z}
组合序列: —{1,4}{a,c}
快速备份数据

cp /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt{,.bak}
cp /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt.bak

快速还原数据

cp /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt{.bak,}
cp /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt.bak /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt
cp messages{-20190707,}

系统正则符号: (适用于grep sed awk)
基础正则: (basic regular expression) BRE
^ — 以什么开头的信息
# ll /etc/|grep “^d”
drwxr-xr-x. 3 root root 101 Jul 3 20:25 abrt
drwxr-xr-x. 2 root root 252 Jul 17 18:13 alternatives
drwxr-x—. 3 root root 43 Jul 3 20:26 audis

$ — 以什么结尾的信息
# grep ‘d$’ /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
注意: 如果结尾有空格信息, 过滤是会出现异常
利用底行模式:set list 可以查看结尾空格信息
利用命令查看:cat -A /etc/selinux/config

问题: 将以点结尾的信息过滤出来:
grep ‘.$’ /etc/selinux/config

\ (不属于正则) — 转义符号
将有特殊意义的符号, 还原本身符号意义

将没有意义的字符,变为有意义

\r \n — 换行符
[root@oldboyedu ~]# echo -e “oldboy01\noldboy02” >oldboy.txt
[root@oldboyedu ~]# cat oldboy.txt
oldboy01
oldboy02
\t — 指表符
取消别名功能
4.可以将扩展正则转换为普通正则
[root@oldboyedu ~]# echo “100000 oldboy”|egrep “[0-9]+”
100000 oldboy
[root@oldboyedu ~]# echo “100000 oldboy”|grep “[0-9]+”
100000 oldboy
^$ — 空行信息
grep -v “^ " / e t c / s e l i n u x / c o n f i g . — 匹 配 任 意 一 个 且 只 有 一 个 字 符 g r e p " . " / e t c / s e l i n u x / c o n f i g − − − 匹 配 任 意 一 个 以 什 么 开 头 的 字 符 g r e p " . " /etc/selinux/config . — 匹配任意一个且只有一个字符 grep "^." /etc/selinux/config --- 匹配任意一个以什么开头的字符 grep ". "/etc/selinux/config.grep"."/etc/selinux/configgrep".” /etc/selinux/config — 匹配任意一个以什么结尾的字符
grep “.” /etc/selinux/config — 匹配整个文件所有任意字符

总结匹配筛选文件信息:

  1. 会按照行进行匹配
  2. 贪婪特性
  3. 利用grep -o可以查看匹配信息的过程
  • — 匹配前一个字符连续出现0次或者多次
    创建一个测试文件:
    创建测试文件:

    I am oldboy teacher!
    I teach linux.

    I like badminton ball ,billiard ball and chinese chess!
    my blog is http://oldboy.blog.51cto.com
    our site is http://www.etiantian.org
    my qq num is 49000448.

    not 4900000448.
    my god ,i am not oldbey,but OLDBOY!

匹配文件中数字0信息
[root@oldboyedu oldboy]# grep “0*” oldboy.txt
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.

not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu oldboy]# grep -o "0*" oldboy.txt 
000
00000

.* — 匹配文件中所有信息
[root@oldboyedu oldboy]# grep “.*” oldboy.txt -o
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

[] — 匹配中括号中任意一个字符
[root@oldboyedu oldboy]# grep “ba” oldboy.txt — 表示过滤一个字符串
I like badminton ball ,billiard ball and chinese chess!
[root@oldboyedu oldboy]# grep “[bac]” oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my god ,i am not oldbey,but OLDBOY!

过滤出所有小写字母:
grep "[a-z]" oldboy.txt     --- 过滤小写字母
grep "[A-Z]" oldboy.txt     --- 过滤大写字母
grep "[a-zA-Z]" oldboy.txt  --- 过滤所有字母
grep "[a-Z]" oldboy.txt     --- 过滤所有字母 
grep -i "[a-z]" oldboy.txt  --- grep忽略大小写进行过滤        

[^] — 将括号内指定字符信息,进行取反过滤
[root@oldboyedu oldboy]# grep -v “[a-Z]” oldboy.txt

[root@oldboyedu oldboy]# grep  "[^a-Z]" oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!                

扩展正则: (extended regular expression) ERE,需要使用grep --> egrep/grep -E sed --> sed -r

  • — 匹配前一个字符连续出现1次或者多次
    egrep s+ /etc/selinux/config
    This file controls the state of SELinux on the system.
    SELINUX= can take one of these three values:
    enforcing - SELinux security policy is enforced.
    permissive - SELinux prints warnings instead of enforcing.
    disabled - No SELinux policy is loaded.
    SELINUX=disabled
    SELINUXTYPE= can take one of three values:
    targeted - Targeted processes are protected,
    minimum - Modification of targeted policy. Only selected processes are protected.
    mls - Multi Level Security protection.

| — 匹配多个字符串信息
匹配oldboy和oldbey单词信息

egrep “oldboy|oldbey” oldboy.txt
企业应用: 配置文件有注释有空行, 如何进行取消

grep -vE “^$ | ^#” /etc/services
() — 将多个字符信息进行整合过滤
第一个作用实践说明
鸡肋——
[root@oldboyedu oldboy]# grep [old] oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is 0 http://www.etiantian.org
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

[root@oldboyedu oldboy]# egrep "(old)" oldboy.txt 
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
my god ,i am not oldbey,but OLDBOY! 

第二个作用: 配合sed命令使用时,可以实现后项引用前项

\color{red}{记住后项只引用括号里面的内容}
echo “123456”|sed -r ‘s#([0-9]+)#<\1>#g’
<123456>
echo “1234567890”|sed -r ‘s#([0-9])#<\1>#g’
echo “789”|sed -r ‘s#(.)(.)(.)#<\1><\2><\3>#g’
<7><8><9>
说明: 后项引用前项只能引用1-9个小括号

{} 匹配前一个字符连续出现指定的次数
{n,m} — 匹配前一个字符连续出现至少n次 最多m次
[root@oldboyedu oldboy]# grep -E “0{2,4}” oldboy.txt
my qq num is 49000448.
not 4900000448.
[root@oldboyedu oldboy]# grep -E “0{2,4}” oldboy.txt -o
000
0000
[root@oldboyedu oldboy]# grep -E “0{1,3}” oldboy.txt -o
0
000
000
00
[root@oldboyedu oldboy]# grep -E “0{1,3}” oldboy.txt
our site is 0 http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
{n} — 匹配前一个字符连续出现正好n次
[root@oldboyedu oldboy]# grep -E “0{3}” oldboy.txt
my qq num is 49000448.
not 4900000448.
[root@oldboyedu oldboy]# grep -E “0{2}” oldboy.txt
my qq num is 49000448.
not 4900000448.
{n,} — 匹配前一个字符连续出现最少n次, 最多不限
{,m} — 匹配前一个字符连续出现最少0次, 最多是m次
[root@oldboyedu oldboy]# grep -E “0{3,}” oldboy.txt
my qq num is 49000448.
not 4900000448.
[root@oldboyedu oldboy]# grep -E “0{,3}” oldboy.txt
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is 0 http://www.etiantian.org
my qq num is 49000448.

not 4900000448.
my god ,i am not oldbey,but OLDBOY!
? — 匹配前一个字符连续出现0次或者1次
[root@oldboyedu oldboy]# egrep “o*” test02.txt
gd
god
good
goood
gooood
[root@oldboyedu oldboy]# egrep “o+” test02.txt
god
good
goood
gooood

[root@oldboyedu oldboy]# egrep “o?” test02.txt
gd
god
good
goood
gooood
[root@oldboyedu oldboy]# egrep “o?” test02.txt -o
o
o
o
o
o
o
o
o
o
o
总结:
通配符号: 匹配文件名称信息
正则符号: 匹配文件内容信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值