sed命令详解

sed是一种流编辑器,用于在文本流中进行基本的文本转换。它可以用于对文件执行各种操作,如添加、删除、替换文本等。

基本用法:

  • sed [options] 'command' file(s)
  • sed [options] -f scriptfile file(s)

常用选项:

  • -n: 关闭自动打印模式
  • -e: 多点编辑
  • -f: 从文件中读取编辑命令
  • -r: 使用扩展正则表达式
  • -i: 直接修改文件内容

命令语法:

[address[,address]]function[arguments]

地址类型:

  1. 无地址:表示对全文进行处理
  2. 单地址:表示对指定行进行处理
  3. 范围地址:表示对指定范围行进行处理
  4. 特殊地址:如/pattern/,表示对匹配模式的行进行处理

常见函数:

  • a: 在指定行后追加文本
  • i: 在指定行前插入文本
  • d: 删除指定行
  • c: 替换指定行
  • s: 替换指定文本,格式为s/old/new/,可以添加选项如g(全局)、n(数字)、p(打印)等。
  • p: 打印指定行
  • =: 打印行号
  • y: 字符转换
  • q: 退出sed

高级功能:

  1. 保持空间hHgG等命令可以用来处理保持空间中的内容。
  2. 分支和循环b:labelt等命令可以用来实现分支和循环。
  3. 模式匹配:可以使用正则表达式进行复杂模式匹配。
  4. 从文件读取r命令可以从其他文件中读取内容。
  5. 写入文件w命令可以将内容写入到其他文件中。
  6. 多个文件编辑:可以一次性处理多个文件。
  7. 与其他命令的集成:可以将sed与管道、shell脚本等集成使用,实现复杂文本处理任务。

示例:

  1. 删除第5行

sed '5d' filename
  1. 打印第3到第7行

sed -n '3,7p' filename
  1. 在匹配模式的行前插入文本

sed '/pattern/i\insert text' filename
  1. 全局替换

sed 's/old/new/g' filename
  1. 从文件中读取编辑命令
    假设有一个名为commands.sed的文件,其中包含一系列sed命令,可以这样执行:

sed -f commands.sed filename
  1. 直接修改文件内容
    要直接修改文件内容,而不是输出到标准输出,使用-i选项:

sed -i 's/old/new/g' filename
  1. 多点编辑:使用-e选项可以进行多点编辑。例如:

sed -e '1d' -e 's/old/new/' filename
  1. 字符转换:使用y命令可以进行字符转换。例如,将小写字母转换为大写字母:

sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' filename
  1. 复杂的模式匹配与替换:可以结合正则表达式进行复杂的匹配与替换操作。例如,匹配以数字开头的行并替换某个模式:

sed '/^[0-9]/ s/pattern/replace/' filename
  1. 与其他命令集成:可以通过管道将sed与其他命令结合起来,实现更为复杂的文本处理任务。例如,使用find和sed来批量替换多个文件中的字符串:

find . -name '*.txt' -exec sed -i 's/old/new/g' {} \;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值