Linux运维云升笔记 (一)正则表达式以及文档编辑器sed
admin
2023-03-29 09:01:54
0

正则表达式概述

使用单个字符来描述、匹配一系列符合某个语句规则的字符串,由普通字符与特殊字符组成,正则表达式广泛使用在脚本编程、文本编辑器中。
正则表达式简写为regex、regexp、RE。
再大多数语言当中正则表达式都被包括在两个正斜杠当中“/”
正则表达式有一个特点“贪婪匹配”:尽量匹配最长的

正则表达式分类

  • 基础正则表达式
    \ 转义字符。例如:“!”将逻辑否的!看做普通字符,\还可以折行
    例子1:
    [root@localhost ~]# ls -l /home \
    > /tmp
    例子2:
    [root@localhost ~]# grep "b.*in" a.txt 
    12 bin 34
    23 sb.*in 23
    44 binary 49
    23 binlog 23
    [root@localhost ~]# grep "b\.\*in" a.txt 
    23 sb.*in 23

    ^ 匹配字符串开始的位置,以…为开头的
    $ 匹配字符串结束的位置,以…为结尾的
    ^$ 表示空行,不是空格

    例子:
    [root@localhost ~]# cat a.txt 
    aa
    aa bb aa
    a b a
    [root@localhost ~]# grep "^aa$" a.txt 
    aa
    .           匹配任意字符串
    *         匹配前面子表达式(字符)0次或者多次
    例子:
    [root@localhost ~]# grep "a 0*" a.txt 
    aa 0
    aa 00
    aa bb 0000 aa 00
    a b a 000
.*          匹配任意字符串

[list]      匹配list列表中的一个字符,例如:[abc]、[a-z]、[a-zA-Z0-9]
例子:
[root@localhost ~]# ifconfig ens32 | grep "TX [pe]"
        TX packets 1776  bytes 206946 (202.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[^list]     匹配任意非list表中的一个字符,例如:[^a-z]、[^0-9]、[^A-Z0-9]
例子:
[root@localhost ~]# ifconfig ens32 | grep "TX [a-f]"
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# ifconfig ens32 | grep "TX [^a-f]"
        TX packets 1814  bytes 210662 (205.7 KiB)
\{n\}       匹配前面子表达式n次
例子:
[root@localhost ~]# grep "a 0\{2\}" a.txt 
aa 00
aa bb 0000 aa 00
a b a 000
\{n,\}      匹配前面子表达式至少n次
[root@localhost ~]# grep "a 0\{2,\}" a.txt 
aa 00
aa bb 0000 aa 00
a b a 000
\{n,m\}     匹配前面子表达式最少n次,最大m次
\<          词首牟定:固定词首
\>          词未牟定:固定词尾 
例子:
[root@localhost ~]# grep "\" a.txt 
a b a 000
转义字符 意义
\a 响铃(BEL)
\b 退格(BS),将当前位置移到前一列
\n 换行(LF)将当前位置移到下一行的开头
\r 回车(CR)将当前位置移动到本行开头
\t 水平制表(HT)调到下一个TAB位置
\v 垂直制表(VT)
\ 代表一个反斜杠字符“\”
  • 扩展正则表达式

    +匹配前面子表达式1次及以上
    ? 匹配前面子表达式0次或者1次
    () 将括号中的字符串作为一个整体
    | 以或的方式匹配字符

Linux常用的文本处理工具

  • grep 匹配,查询(过滤)
  • sed 编辑(增加,删除,修改)
  • awk 文本格式化(字符串提取)

注意事项

  • Linux中正则一般以行为单位处理文件
  • alias grep=‘grep --color=auto’
  • 注意字符集,LANG=C

通配符
正则表达式和我们命令行中使用的通配符是有本质区别的。
通配符一般是处理文件名的
ls -l .txt
:任意长度任意字符串,属于通配符。
?:单个任意字符串,属于通配符。

grep命令的参数
-v 排除匹配的内容(取反)

-E 支持扩展正则表达式=egrep

[root@localhost ~]# grep -Ev "^$|#" /etc/httpd/conf/httpd.conf 
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf

-i 忽略大小写

[root@localhost ~]# cat a.txt
aAAA
[root@localhost ~]# grep -i "a" a.txt 
aAAA
[root@localhost ~]# 

-o 只输出匹配的内容

[root@localhost ~]# grep -o "root" /etc/passwd
root
root

–color=auto 匹配的内容显示颜色(用的不多 alias查看别名)

-n 在行首显示行号

[root@localhost ~]# grep -n "root" /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
43:admin:x:1000:1000:root:/home/admin:/bin/bash

-q 匹配内容不显示(静默输出,一般写脚本的时候用而不输出到屏幕)

-w 将过滤条件当成单词来匹配

[root@localhost ~]# grep -w "bin" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
admin:x:1000:1000:root:/home/admin:/bin/bash
[root@localhost ~]# grep "bin" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

-c 只输出匹配行的计数

[root@localhost ~]# grep -c "root" /etc/passwd
3

相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...