博客
关于我
Linux - 不得不知的利器(sed)
阅读量:139 次
发布时间:2019-02-26

本文共 1645 字,大约阅读时间需要 5 分钟。


sed 是最早开始支持正则表达式的工具之一,能够以非交互方式编辑文件。通过 sed,用户可以轻松完成文件的增、删、改、查等操作。以下是 sed 的基本操作和常用命令的详细说明。

sed 命令格式

sed 的命令格式为:

sed [options] ‘command’ file(s)sed [options] -f scriptfile file(s)

其中,options 是 sed 的常用选项,command 是具体的 sed 命令,file(s) 是需要处理的文件路径。

sed 常用命令选项

  • -n:屏蔽默认输出功能。
  • -r:支持扩展正则表达式。
  • -i:直接修改源文件,备份前先将文件内容复制到临时文件中。
  • -e:执行多个 sed 命令,支持用逗号分隔多个指令。
  • -f:执行存储在脚本文件中的 sed 命令。

sed 基本操作指令

以下是 sed 的常见操作指令:

  • p:打印当前匹配的数据行。
  • l:打印当前匹配的数据行(与 p 类似)。
  • =:打印当前读取的数据行数。
  • a text:在匹配的数据行后面追加文本内容。
  • i text:在匹配的数据行前面插入文本内容。
  • d:删除匹配的数据行整行内容。
  • c text:将匹配的数据行内容替换为特定的文本内容。
  • r filename:从文件中读取数据并追加到匹配的数据行后面。
  • w filename:将当前匹配到的数据写入特定的文件中。
  • q:立即退出 sed 脚本。

sed 数据定位方法

sed 提供多种定位方法:

  • number:直接根据行号匹配数据。
  • first~step:从 first 行开始,步长为 step,匹配所有满足条件的数据行。
  • $:匹配最后一行。
  • /regexp/:使用正则表达式匹配数据行。
  • \c:使用正则表达式匹配数据行,\c 为任意字符。
  • addr1,addr2:直接使用行号定位,匹配从 addr1 到 addr2 的所有字符。
  • addr1,+N:直接使用行号定位,匹配从 addr1 开始及后面的 N 行。

sed 命令示例

  • 打印文件内容

    sed -n 'p' /etc/hosts

    该命令将仅显示文件的内容,每行打印一次。

  • 显示文件的第 1 行或第 2 行

    sed -n '1p' /etc/hostssed -n '2p' /etc/hosts
  • 从管道读取数据

    echo "hello,world" | sed -n 'p'

    该命令将输出 "hello,world"。

  • 显示文件最后一行的内容

    sed -n '$p' /etc/hosts
  • 显示以 "http" 开头的数据行

    sed -n '/^http/p' /etc/hosts
  • 显示包含数字的数据行

    sed -n '/\d/p' /etc/hosts
  • 显示以 "bash" 结尾的行并显示

    sed -n '/bash$/p' /etc/hosts
  • 显示所有行的第 1 列到第 3 列

    sed -n '1~3p' /etc/hosts
  • sed 指令分隔符

    多条 sed 指令可以通过分号分隔执行:

    sed -n 'p; l' /etc/hosts

    sed 替换和删除操作

    • 替换操作

      sed -n 's/old/new/g' /etc/hosts

      该命令将将文件中的所有 "old" 替换为 "new"。

    • 删除操作

      sed -i '/bash$/d' /etc/hosts

      该命令将删除文件中所有以 "bash" 结尾的行。

    sed 脚本文件执行

    将 sed 指令写入脚本文件后,可以使用 -f 选项执行:

    sed -f scriptfile /etc/hosts

    注意事项

    在实际操作中,建议先在备份文件上测试 sed 指令的效果。对于需要多次修改的文件,可以将 sed 指令写入脚本文件后使用 -f 选项执行。

    通过以上命令,用户可以根据需要对文件进行增删改查操作。sed 提供了丰富的定位方式和操作指令,能够满足多种文件处理需求。

    转载地址:http://oziy.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现Http协议下载文件(附完整源码)
    查看>>
    Objective-C实现IIR 滤波器算法(附完整源码)
    查看>>
    Objective-C实现IIR数字滤波器(附完整源码)
    查看>>
    Objective-C实现insertion sort插入排序算法(附完整源码)
    查看>>
    Objective-C实现integer partition整数分区算法(附完整源码)
    查看>>
    Objective-C实现integerPartition整数划分算法(附完整源码)
    查看>>
    Objective-C实现interpolation search插值搜索算法(附完整源码)
    查看>>
    Objective-C实现Interpolation search插值查找算法(附完整源码)
    查看>>
    Objective-C实现intersection交集算法(附完整源码)
    查看>>
    Objective-C实现intro sort内省排序算法(附完整源码)
    查看>>
    Objective-C实现inversions倒置算法(附完整源码)
    查看>>
    Objective-C实现isalpha函数功能(附完整源码)
    查看>>
    Objective-C实现islower函数功能(附完整源码)
    查看>>
    Objective-C实现isPowerOfTwo算法(附完整源码)
    查看>>
    Objective-C实现ItemCF算法(附完整源码)
    查看>>
    Objective-C实现iterating through submasks遍历子掩码算法(附完整源码)
    查看>>
    Objective-C实现jaccard similarity相似度无平方因子数算法(附完整源码)
    查看>>
    Objective-C实现Julia集算法(附完整源码)
    查看>>
    Objective-C实现k nearest neighbours k最近邻分类算法(附完整源码)
    查看>>
    Objective-C实现k-Means算法(附完整源码)
    查看>>