Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • shell

    • shell 入门指南
    • linux 入门指南
    • Shell 常用命令速查手册
    • Shell 代码片段集合
    • awk
    • fd
    • ftp
    • sftp
    • ifconfig
    • ssh
    • sed
      • base
        • OPTIONS
        • mode
        • &
        • POSIX sed 规则
        • 注意
      • GUN sed
      • link
    • xargs
  • tool

  • 网络

  • algo

  • compute_base

  • blog

  • growth

  • java

  • C&C++

  • ai

  • secure

  • cms

  • english

  • 生活

  • 金融学

  • more

  • other
  • shell
Jacky
2024-11-01
目录

sed

sed sed 是一个流编辑器(Stream EDitor)。流编辑器对输入流(文件或者是来自于管道的输入)进行基本的文件转换

# base

sed 命令的一般语法是: sed OPTIONS... [SCRIPT] [INPUTFILE...]. 其中 OPTIONS 是命令行选项, SCRIPT 是 sed 的编辑脚本, 可以是一个或多个命令, INPUTFILE 是要处理的输入文件

# OPTIONS

  • -i: This tells sed to edit files in place, rather than outputting the modified text to the console.
    • 在 macOS 上使用 -i '' 表示不创建备份文件;在 Linux 上可以直接使用 -i
  • -n: 抑制自动输出

# mode

  • s: 替换, 规则 s/PATTERN/REPLACEMENT/FLAGS. FLAGS 是可选的标志, 例如 g 表示全局替换
    • sed -E 's/\[//g; s/\]//g': 多规则替换。这里表示替换 [ 和 ] 为空字符串
    • sed 's/foo/bar&/' text.txt: 在 foo 前面直接加 bar。 这里的 &: 表示当前匹配到的字符串
  • d: 删除模式
    • sed '/foo/d' text.txt: 删除文本中所有包含 "foo" 的行
  • i: 在匹配模式前插入一行文本
    • sed '/foo/i\bar' text.txt
  • a: 用于在匹配模式后追加一行文本
    • sed '/foo/a\bar' text.txt
  • p: 用于打印匹配模式的行
    • sed -n '1p' url.txt: 只打印第一行
    • sed -n '/foo/p' text.txt

# &

表示当前匹配到的字符串

# POSIX sed 规则

[a-zA-Z0-9][a-zA-Z0-9]* 匹配一个或多个字母或数字。这是标准 sed 中的等价表达方式,不依赖扩展语法.

# 注意

  1. 正则的限制
  • \w 在 sed 中的使用需要特定的扩展模式支持,如 GNU sed 的 -E 或 -r 选项. 见下面 gsed
  1. 遵循 POSIX sed 规则。 sed 版本不支持 \+.
  • echo "hello world" | sed 's/[a-zA-Z0-9][a-zA-Z0-9]*/(&)/g'

# GUN sed

GUN sed 对 POSIX sed 进行了一些扩展。 支持扩展正则表达式,可通过 brew install gnu-sed 安装 GNU sed. 这将确保你在使用 GNU sed 时可以正常运行扩展正则表达式. 如下:

-> % echo "hello world" | gsed -E 's/\w+/(&)/g'
(hello) (world)
1
2

# link

  • sed 命令用法小结 (opens new window)
  • GNU sed 用户手册 (opens new window)
上次更新: 2024/12/01, 17:09:08
ssh
xargs

← ssh xargs→

最近更新
01
npx 使用指南
10-12
02
cursor
09-28
03
inspect
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式