Linux sed 的详细用法和一些常见的示例

sed 是一种强大的流编辑器,用于对文本进行基本的文本转换和处理。以下是 sed 的详细用法和一些常见的示例:

基本语法

 sed [选项] '命令' 文件名

常用选项

  • -e:直接在命令行模式上进行sed操作

  • -f:将sed的操作写入文件

  • -i:直接修改读取的文件内容,而不是输出到终端

  • -n:仅显示sed处理过的行

基本命令

  1. 替换

     sed 's/旧文本/新文本/' 文件名

    例子:将 example.txt 中的 "apple" 替换为 "orange":

     sed 's/apple/orange/' example.txt
  2. 全局替换

     sed 's/旧文本/新文本/g' 文件名

    例子:将 example.txt 中所有的 "apple" 替换为 "orange":

     sed 's/apple/orange/g' example.txt
  3. 在特定行进行替换

     sed '行号s/旧文本/新文本/' 文件名

    例子:将 example.txt 中第3行的 "apple" 替换为 "orange":

     sed '3s/apple/orange/' example.txt
  4. 删除行

     sed '行号d' 文件名

    例子:删除 example.txt 中的第2行:

    sed '2d' example.txt
  5. 删除匹配模式的行

    sed '/模式/d' 文件名

    例子:删除 example.txt 中包含 "apple" 的行:

    sed '/apple/d' example.txt
  6. 插入行

    sed '行号i\插入文本' 文件名

    例子:在 example.txt 的第2行前插入 "Hello World":

    sed '2i\Hello World' example.txt
  7. 追加行

    sed '行号a\追加文本' 文件名

    例子:在 example.txt 的第2行后追加 "Hello World":

    sed '2a\Hello World' example.txt
  8. 替换特定行范围内的文本

    sed '起始行号,结束行号s/旧文本/新文本/g' 文件名

    例子:将 example.txt 中第2到第4行的 "apple" 替换为 "orange":

    sed '2,4s/apple/orange/g' example.txt
  9. 读取并插入文件内容

    sed '/模式/r 文件名' 文件名

    例子:在 example.txt 中匹配到 "pattern" 的行后插入 insert.txt 的内容:

    sed '/pattern/r insert.txt' example.txt
  10. 使用正则表达式匹配

    sed -E 's/正则表达式/新文本/' 文件名

    例子:将 example.txt 中以 "a" 开头,后跟任意字符,然后是 "e" 的部分替换为 "new":

     sed -E 's/a.*e/new/' example.txt

实例操作

  1. 删除所有空行:

     sed '/^$/d' example.txt
  2. 在每行前添加行号:

     sed '=' example.txt | sed 'N;s/\n/\t/'
  3. 只替换文件中的第一个匹配:

     sed '0,/旧文本/s//新文本/' 文件名

    例子:在 example.txt 中只替换第一次出现的 "apple" 为 "orange":

     sed '0,/apple/s//orange/' example.txt
  4. 交换文件中的两行:

     sed -e '行号1h' -e '行号1d' -e '行号2G' 文件名

    例子:交换 example.txt 中的第1行和第2行:

     sed -e '1h' -e '1d' -e '2G' example.txt

sed 是一个功能强大的工具,适用于多种文本处理任务。通过掌握 sed 的各种命令和选项,用户可以高效地进行文本编辑和转换。

联系我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值