• Linux安全—linux三剑客之sed(持续更新)


    Linux安全基础—linux三剑客之sed学习

    sed简介:

    sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。sed是操作,过滤和转换文本内容的强大工具。

    sed操作原理:

    总结:默认情况下sed会将整个文本的所有内容都读取到它自己的模式空间(pattern space)中,然后使用添加的规则进行匹配,随后会将匹配成功和失败的都会输出到屏幕中(和其他命令只输出匹配成功至屏幕中略有不同),具体如下截图:

    在这里插入图片描述
    原理举例:
    在这里插入图片描述

    sed格式:(sed和awk使用单引号,双引号有特殊解释)

    sed [选项] [sed内置命令字符] [输入文件]
    sed格式举例:命令 sed -n '2p' sed.txt
    
    • 1
    • 2

    在这里插入图片描述
    常见选项:
    在这里插入图片描述
    常见内置命令字符:
    在这里插入图片描述
    常见匹配范围:
    在这里插入图片描述

    举例说明(可通过如下例子结合上述理论知识学习sed)

    例子1:获取sed.txt文件的第2,3行,并只将符合匹配规则的输出到屏幕中(-n选项)

    命令:sed -n '2,+3p' sed.txt
    
    • 1

    在这里插入图片描述
    例子2:获取sed.txt文件的第2行和第二行下面的第三行,并只将符合匹配规则的输出到屏幕中(-n选项)

    命令:sed -n '2,+3p' sed.txt
    
    • 1

    在这里插入图片描述
    例子3:获取sed.txt文件的包含“linux”字符的那行,并只将符合匹配规则的输出到屏幕中(-n选项)

    命令:sed -n '/linux/p' sed.txt
    
    • 1

    在这里插入图片描述
    例子4:获取sed.txt文件的包含“game”字符的那行,并进行删除(磁盘中删除)

    命令:sed '/game/d' sed.txt
    
    • 1

    未添加选项-i参数:删除仅在内存中删除,内容本身还是存在的
    在这里插入图片描述
    添加选项-i参数:内容会从磁盘中删除,内容本身不存在的在这里插入图片描述
    **例子5:**获取sed.txt文件中的第二行到结尾的内容,并进行删除(磁盘中删除)

    $字符:匹配以$左侧结尾的字符行
    
    • 1

    在这里插入图片描述

    命令:sed -i '4,$d'  sed.txt
    
    • 1

    在这里插入图片描述
    例子6:将sed.txt的"i"字符全部替换成"my"字符(从磁盘中修改)

    命令:sed -i  's\i\my\g' sed.txt
    
    • 1

    在这里插入图片描述
    **例子7:**将sed.txt的"i"字符全部替换成"my"字符(从磁盘中修改),同时将"qq"替换成"weixin"

    命令:sed -i   -e 's\my\i\g' sed.txt -e 's\qq\weixin\g'
    
    • 1

    在这里插入图片描述例子8:在sed.txt中的第二行下面添加一行,内容为"linux is very good"(从磁盘中修改)

    命令::sed -i '2a linux is very good' sed.txt
    
    • 1

    在这里插入图片描述
    添加多行:可以通过"\n"进行连接

    命令: sed -i '2a linux is very good\n123456789' sed.txt
    
    • 1

    在这里插入图片描述
    例子9:在sed.txt文件中下面的每一行添加数据

    命令:sed -i 'a ------' sed.txt
    
    • 1

    在这里插入图片描述

    案例练习:

    案例1:取出网卡ens33的IP地址

    命令:ifconfig ens33 | sed -n '2p'
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    IT学习笔记--Flink
    【SwiftUI模块】0015、SwiftUI自定义音频播放器
    八道超经典指针面试题(三千字详解)
    【WebLogic】WebLogic 2023年7月补丁导致JVM崩溃的解决方案
    MacOS常见问题
    Java教程:如何不使用递归实现文件夹的遍历?
    MySQL—— 用户创建和权限管理
    利用STM32 HAL库实现USART串口通信,并通过printf重定向输出“Hello World“
    实再高度为设备高度的100%布局
    谈谈Python中的正则表达式及其用法。
  • 原文地址:https://blog.csdn.net/weixin_44431280/article/details/126742084