正则表达式(拓展)、grep(拓展)和sed

一、正则表达式

  egrep默认使用的是扩张正则

  表示次数

*匹配前面字符任意数
0次或者1次
+1次或者多次
{n}匹配n次
{m,n}最少m次,最多n次
{,n}匹配前面的字符最多n次
{n,}匹配前面的字符最少n次

  表示分组

()分组将多个字符捆绑在一起当作一个整体处理
\1、\2后向引用
|或者
a|ba或者b
C|catC或cat
(C|c)atCat或cat

二、grep

  格式:grep [选项]… 查找条件 目标文件

选项功能
-color=auto对匹配到的文本着色显示
-m匹配#次后停止
grep -m 1 root /etc/passwd多个匹配只取第一个
-v显示不被pattern匹配到的行,即取反
grep -Ev '[[:space:]]*#|^$'

-i

忽略字符大小写
-n显示匹配的行号
-c统计匹配的行号
grep -c root /etc/passwd统计匹配到的行号
-o仅显示匹配到的字符串
-q静默模式,不输出任何模式,用途写脚本
-Aafter,后#行
grep -A3 root /etc/passwd匹配到行后3行显示出来
-Bbefore,前#行
-Ccontext,前后各#行
-e实现多个选项间的逻辑or关系
grep -e root -e bash /etc/passwd包含root或者包含bash的行
grep -E root|bash /etc/passwd
-w匹配整个单词
grep -w root /etc/passwd
useradd rooter
-E使用ERE,相当于egrep
-F不支持正则表达式,fgrep
-ffile根据模式,处理两个文件相同内容 把第一个文件作为匹配条件
-r递归目录,但不处理软链接
-R递归目录,但处理软链接

  统计当前主机的连接状态 

  统计当前连接主机数

三、sed

  sed是行编辑器,和vi不同的是,sed是读取一行,处理一行,输出一行;而vi是将整个文件放到内存里打开。前者基本无视文件内容的大小,后者要注意自身内存是否能够涵盖住文件大小。

  格式:sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...

  3.1 基本用法

    sed [option]...            'script;script;...'                 [input  file...]
        选项                          自身脚本语法               支持标准输入管道

选项功能
-n不输出模式空间到屏幕,即不自动打印
-e多点编辑[root@www data]#sed -n -e '/^r/p' /etc/passwd

-f

FILE从指定文件中读取编辑脚本
-r、-E使用扩展正则表达式
-i.bak备份文件并原处编辑

  3.2 sed脚本语法格式

    语法:地址+命令

     1. 不给地址:给全文进行处理

     2.单地址

       #:指定的行  $:最后一行

      /pattern/:该此处模式所能匹配到的每一个行

    3.地址范围

      #,#:从#行到第#行。举例:3,6代表从第3行到第6行

      #,+#:从#行到第+#行。举例:3,+4代表从第3行到第7行

    4.步行:~

      1~2  奇数步

      2~2  偶数步

命令注释
p打印当前模式空间内容,追加到默认输出之后
Ip忽略大小写输出
d删除模式空间匹配的行,并立即启动下一轮循环
a[\text]在指定行后面追加文本,支持使用\n实现多行追加
i[\text]在行前面插入文本
c[\text]替换行为单行文本或多行文本
wfile保存模式匹配的行至指定文件
rfile读取指定文件的文本至模式空间中匹配到的行号
=为模式空间的行打印行号
!模式空间中匹配行取反处理
q结束或退出sed

  另外它还支持正则表达式

    自动打印需要打印否则会全部打印,如图所示 

    正确结果应该如下图所示

    匹配两个正则表达式的行

      基本格式: '/表达式1/,/表达式2/p'  文件名

    匹配方式

  1.       先开始找b开头一直找到f开头
  2.       然后再重新找b开头,一找到f开头,没有f开头就全显示
  3.       重复循环

    奇偶数表示

    选项-d:删除

    修改文件内容,常常用于修改配置文件

    -i和-i.bak的区别

      -i:修改文件

      -i.bak:修改文件前先备份

    选项-a:追加 

  3.3 搜索替代

    s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
    替换修饰符:
      g 行内全局替换
      p 显示替换成功的行
      w   /PATH/FILE 将替换成功的行保存至文件中
      I,i   忽略大小写

    内容较长就不展示了

   

    提取版本号

[root@localhost /]#cat 1.txt | grep -e "[0-9]\+\."
ant-1.9.7.jar
ant-launcher-1.9.7.jar
antlr-2.7.7.jar
antlr-runtime-3.4.jar
aopalliance-1.0.jar
archaius-core-0.7.6.jar
asm-5.0.4.jar
aspectjweaver-1.9.5.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15-1.46.jar
bcprov-jdk15on-1.64.jar
checker-compat-qual-2.5.5.jar

[root@localhost /]#cat 1.txt |sed -r 's/.*-(.*)\.jar/\1/'
1.9.7
1.9.7
2.7.7
3.4
1.0
0.7.6
5.0.4
1.9.5
1.64
1.46
1.64
2.5.5

  3.4 变量

  3.5 改配置文件

  3.6 修改网卡名

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell中的sed是一种文本处理工具,它可以根据指定的正则表达式进行文本的删除、替换、添加等操作。通过使用sed命令,我们可以在每行的行尾插入字符串。例如,使用命令"sed 's/$/EOF/' test.txt"可以在每行的行尾插入字符串"EOF"。 sed命令依赖于正则表达式,可以实现相当复杂的文本处理操作,并广泛应用于Shell脚本中,以完成自动化处理任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Shell正则表达式grepsed、awk实操笔记](https://download.csdn.net/download/weixin_38660295/12846597)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Shell编程正则表达式sed](https://blog.csdn.net/weixin_49343462/article/details/109636744)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Shell正则表达式sed](https://blog.csdn.net/LiuRzhi/article/details/117782094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值