Linux 三剑客之 sed

sed 是一个流编辑器,用于对文本进行基本的转换和处理。以下是 sed 命令的所有选项及其功能的详细说明,并附带示例和注释:

基本用法

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

选项说明

  • -n, --quiet, --silent:抑制自动打印模式空间。

    sed -n 's/foo/bar/p' file.txt
    # 只打印替换了 'foo' 的行,不打印其他行
    
  • -e script, --expression=script:将 script 添加到要执行的命令中。

    sed -e 's/foo/bar/' file.txt
    # 执行替换操作,将 'foo' 替换为 'bar'
    
  • -f script-file, --file=script-file:将 script-file 的内容添加到要执行的命令中。

    sed -f script.sed file.txt
    # 从 script.sed 文件中读取 `sed` 脚本并执行
    
  • --follow-symlinks:处理文件时跟随符号链接。

    sed --follow-symlinks -i 's/foo/bar/' file.txt
    # 替换文件中的 'foo' 为 'bar',处理符号链接
    
  • -i[SUFFIX], --in-place[=SUFFIX]:就地编辑文件(如果提供了 SUFFIX,则创建备份)。

    sed -i.bak 's/foo/bar/' file.txt
    # 替换文件中的 'foo' 为 'bar',并创建备份 file.txt.bak
    
  • -c, --copy:在 -i 模式下使用 copy 代替 rename

    sed -i -c 's/foo/bar/' file.txt
    # 替换文件中的 'foo' 为 'bar',使用 copy 而非 rename
    
  • -b, --binary:在兼容 WIN32/CYGWIN/MSDOS/EMX 时打开文件为二进制模式(在现代系统中无效)。

    sed -b 's/foo/bar/' file.txt
    # 以二进制模式处理文件(通常不需要)
    
  • -l N, --line-length=N:指定 l 命令的所需行长度。

    sed -l 80 'l' file.txt
    # 使用 `l` 命令以 80 个字符的宽度打印文件
    
  • --posix:禁用所有 GNU 扩展。

    sed --posix 's/foo/bar/' file.txt
    # 使用 POSIX 标准,禁用 GNU 扩展
    
  • -r, --regexp-extended:在脚本中使用扩展正则表达式。

    sed -r 's/(foo|bar)/baz/' file.txt
    # 使用扩展正则表达式将 'foo' 或 'bar' 替换为 'baz'
    
  • -s, --separate:将文件视为分开的,而不是作为一个连续的长流。

    sed -s 's/foo/bar/' file1.txt file2.txt
    # 将 file1.txt 和 file2.txt 视为独立文件处理
    
  • -u, --unbuffered:从输入文件加载最小数据量,并更频繁地刷新输出缓冲区。

    sed -u 's/foo/bar/' file.txt
    # 处理文件时使用最小缓冲
    
  • -z, --null-data:使用 NUL 字符分隔行。

    sed -z 's/foo/bar/' file.txt
    # 使用 NUL 字符分隔文件中的行(适用于二进制数据)
    
  • --help:显示帮助信息。

    sed --help
    # 显示 `sed` 的帮助信息
    
  • --version:输出版本信息。

    sed --version
    # 显示 `sed` 的版本信息
    

示例

  • 基本替换:将文件中的 foo 替换为 bar

    sed 's/foo/bar/' file.txt
    # 将文件中的 'foo' 替换为 'bar'
    
  • 就地编辑:直接在文件中替换 foobar,并备份原文件。

    sed -i.bak 's/foo/bar/' file.txt
    # 替换 'foo' 为 'bar',并创建备份 file.txt.bak
    
  • 从文件读取脚本:从 script.sed 文件中读取 sed 脚本。

    sed -f script.sed file.txt
    # 从 script.sed 文件中读取 `sed` 脚本并执行
    
  • 使用扩展正则表达式:使用扩展正则表达式将 foobar 替换为 baz

    sed -r 's/(foo|bar)/baz/' file.txt
    # 使用扩展正则表达式将 'foo' 或 'bar' 替换为 'baz'
    
  • 逐行处理:使用 -np 命令仅打印包含 foo 的行。

    sed -n '/foo/p' file.txt
    # 只打印包含 'foo' 的行
    
  • 处理 NUL 字符:将文件的 NUL 分隔行转换为换行符。

    sed -z 's/\x00/\n/g' file.txt
    # 将 NUL 字符替换为换行符
    
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值