标签搜索

sed

PVLOG
2024-12-12 发布 / 正在检测是否收录...

sed

sed 是一个强大的流编辑器(Stream Editor),常用于文本处理、文件编辑和格式化输出等操作。它支持模式匹配、替换、插入、删除和其它复杂的文本操作。


基本语法

sed [选项] '脚本' 文件
  • 选项

    • -e:允许在命令行中添加多个脚本。
    • -i[.suffix]:就地编辑文件,保存时可创建备份,备份文件后缀为 .suffix
    • -n:禁止自动输出,通常和 p(打印)一起使用。
    • -f:从脚本文件读取 sed 命令。
    • --help / --version:查看帮助或版本信息。
  • 脚本:指定要执行的编辑命令,如替换、删除、打印等。
  • 文件:指定目标文件或通过管道输入数据。

常用命令

1. 替换(s)

sed 's/匹配模式/替换内容/修饰符' 文件
  • 示例

    echo "Hello World" | sed 's/World/Everyone/'

    输出:Hello Everyone

  • 修饰符

    • /g:全局替换(每行的所有匹配)。
    • /i:忽略大小写。
    • /p:匹配后打印匹配行(通常与 -n 一起用)。
    • /n:仅替换第 n 次出现的匹配项。

    示例

    echo "a b c a b c" | sed 's/a/x/g'

    输出:x b c x b c


2. 删除(d)

sed '模式/d' 文件
  • 删除匹配的行。

    echo -e "line1\nline2\nline3" | sed '/line2/d'

    输出:

    line1
    line3

3. 打印(p)

sed -n '模式/p' 文件
  • 打印匹配的行。

    echo -e "line1\nline2\nline3" | sed -n '/line2/p'

    输出:

    line2

4. 插入/追加

  • 插入(i):在指定行前插入。

    sed '2i\插入内容' 文件
  • 追加(a):在指定行后追加。

    sed '2a\追加内容' 文件

5. 替换特定行

sed '2s/匹配模式/替换内容/' 文件
  • 只替换第二行的内容。

6. 多命令操作

sed -e '命令1' -e '命令2' 文件

示例

echo -e "foo\nbar\nbaz" | sed -e 's/foo/FOO/' -e 's/baz/BAZ/'

输出:

FOO
bar
BAZ

7. 保存修改到文件

  • 使用

    -i

    直接修改文件。

    sed -i 's/old/new/g' filename

进阶:地址匹配

1. 按行号匹配

sed '1,3d' 文件   # 删除第 1 到 3 行

2. 按正则匹配

sed '/模式/d' 文件  # 删除匹配模式的所有行

3. 组合匹配

sed '1,3{/模式/d}' 文件  # 删除第 1 到 3 行中匹配模式的行

常见用法汇总

  1. 替换所有匹配:

    sed 's/foo/bar/g' 文件
  2. 注释配置文件:

    sed -i 's/^/#/' filename
  3. 删除空行:

    sed '/^$/d' 文件
  4. 删除行首/行尾的空格:

    sed 's/^[ \t]*//' 文件  # 删除行首空格
    sed 's/[ \t]*$//' 文件  # 删除行尾空格
  5. 修改多个文件:

    sed -i 's/foo/bar/g' *.txt

sed 是 Linux 中不可或缺的工具,尤其适合处理大量文件或数据流,灵活而高效。

© 版权声明
THE END
喜欢就支持一下吧
点赞 3 分享 收藏

评论 (0)

取消