Linux中_使用sed_命令_编辑_替换_插入_删除_文本_命令_了解

1、介绍:

sed 命令是在 Linux 系统中用来编辑和替换文本的命令,可以用于对文本进行替换、删除、插入等操作。

2、功能介绍

sed 命令可以实现以下功能:

在行中查找并替换文本。
在文件中查找并替换文本。
从文件或输入流中读取数据,并将结果输出到屏幕或文件中。
支持正则表达式,可以实现更复杂的文本操作。

3、使用介绍:

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

sed 命令的主要参数包括:

    -n, --quiet, --silent
                 取消自动打印模式空间,禁止自动输出模式空间内容。只输出经过sed处理后的行。
        --debug
                 对程序运行进行标注
    -e 脚本, --expression=脚本
                 指定一个编辑脚本,添加“脚本”到程序的运行列表
    -f 脚本文件, --file=脚本文件
                 指定一个编辑脚本文件,添加“脚本文件”到程序的运行列表
    --follow-symlinks
                 直接修改文件时跟随软链接
    -i[扩展名], --in-place[=扩展名]
                 直接修改文件(如果指定扩展名则会备份原文件)
    -l N, --line-length=N
                 指定“l”命令的换行期望长度
    --posix
                 关闭所有 GNU 扩展
    -E, -r, --regexp-extended
                 在脚本中使用扩展正则表达式
                 (为保证可移植性使用 POSIX -E)。
    -s, --separate
                 将输入文件视为各个独立的文件而不是单个
                 长的连续输入流。替换只匹配到的第一个字符串。
        --sandbox
                 在沙盒模式中进行操作(禁用 e/r/w 命令)。
    -u, --unbuffered
                 从输入文件读取最少的数据,更频繁的刷新输出,使用不带缓冲区的输出。
    -z, --null-data
                 使用 NUL 字符分隔各行
        --help     打印帮助并退出
        --version  输出版本信息并退出

如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为
sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准输入读取数据。

GNU sed 主页:<https://www.gnu.org/software/sed/>。
使用 GNU 软件的一般性帮助:<https://www.gnu.org/gethelp/>

4、示例

1. 替换文本

    替换文件中的所有 old 为 new:

    sed 's/old/new/g' file.txt
    
    g 表示全局替换,如果不加 g,则只会替换每行的第一个匹配。
    
    将文件中的所有"foo"和"bar"替换为"baz":
    
    sed -e 's/foo/baz/g' -e 's/bar/baz/g' file.txt

2. 删除行

    删除文件中包含 pattern 的行:

    sed '/pattern/d' file.txt

3. 插入文本

    在文件的第 2 行后插入一行文本:

    sed '2a New line' file.txt
    
    2a 表示在第 2 行后添加,如果使用 2i 则在第 2 行前添加。

4. 编辑文件并备份

    在文件中查找并替换文本,同时备份原文件:

    sed -i.bak 's/old/new/g' file.txt

5. 使用正则表达式

    使用正则表达式匹配文件中的文本:

    sed -n '/pattern/p' file.txt
    -n 表示禁止自动输出模式空间内容,/pattern/p 表示查找包含 pattern 的行并输出。

6、删除文件中的所有空行:

    sed '/^$/d' file.txt

7、删除文件中包含特定字符串的行:

    sed -i '/<string-to-delete>/d' <filename>
        
        <string-to-delete> 是要删除的字符串,
        <filename> 是要操作的文件名。

    例如,如果要删除文件 example.txt 中包含字符串 test 的行,可以使用以下命令:

        sed -i '/test/d' example.txt

    注意,这个命令会直接修改文件,请确保备份好文件或者确认操作无误再进行。

8、只保留含有特定字符串的行:

    sed -i '/特定字符串/!d' 文件名

        特定字符串替换为需要保留的字符串,文件名替换为需要处理的文件名。

        这个命令的意思是,对于文件中的每一行,如果不含有特定字符串,则将该行删除,最终只保留含有特定字符串的行。

    
    如果想输出到一个新的文件中,可以使用如下命令:

        sed '/特定字符串/!d' 原文件名 > 新文件名
    
        其中,特定字符串和原文件名替换为相应的字符串和文件名,新文件名为输出的新文件名。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值