什么是 sed,它的用途是什么?

Set*_*eth 21 command-line sed

我最近看到了很多sed,我发现这是一个相当混乱的命令。联机帮助页并不是特别有用,但我知道它可用于解析其他命令的输出。

究竟是sed什么以及它的用途是什么?我正在寻找一个全面的答案,涵盖sed它是什么、它的常用用途以及一些基本示例/语法。

dem*_*ure 24

在基本用法中,它用于“搜索和替换”字符串。

echo "The quick brown fox jumps over the lazy dog" | sed 's/dog/cat/'

返回

"The quick brown fox jumps over the lazy cat"

当使用正则表达式时,Sed 真的很出色。

你可能想看看这篇关于 的文章sed,它相当全面。


Ser*_*nyy 5

定义

Unix System V:实用指南,马克·索贝尔着:

sed 实用程序是一个批处理(非交互式)编辑器。sed 命令通常存储在脚本文件中。. .虽然您可以从命令行给出简单的 sed 命令。. .

sed (GNU sed) 4.2.2 的手册页:

Sed 是一个流编辑器。流编辑器用于每个?在输入流(文件或管道输入)上形成基本的文本转换。

我的非正式定义:

Sed流编辑器的缩写)是一种文本处理实用程序,它是在一次处理一行文本时开发的,但仍然是最强大的 Unix/Linux 实用程序之一;同时,它是一种脚本语言,专为处理文本而设计。

用途

正如定义所暗示的那样,sed用于批处理文本行、文本文件和管道文本流。它最常用于替换和删除文本:

echo "stackexchange" | sed 's/stackexchange/askubuntu/'
Run Code Online (Sandbox Code Playgroud)

但是,它也可以用来模仿其他命令的行为。例如,

  • 模仿 dmesg | head -n 3(打印前 3 行),我们可以做dmesg | sed -n 1,3p.
  • 模仿dmesg | grep 'wlan0'(搜索字符串),我们可以做dmesg | sed -n '/wlan0/p'
  • 项目清单

sed与其他文本处理实用程序相比,最大的优势是-i标志,这意味着我们不仅可以将编辑过的文本输出到屏幕上,还可以将编辑内容实际保存到原始文件中。awk相比之下, flavors 仅在GNU awkversion 中有这样的功能。

sed可以在命令行上输入,多个模式用分号 ( ;)分隔或从-f标志后指定的脚本文件中获取,例如cat someTextfile.txt | sed -f myScript.sed

Sed 应用程序和示例