广告
返回顶部
首页 > 资讯 > 操作系统 >linux中如何使用Sed文本编辑器
  • 260
分享到

linux中如何使用Sed文本编辑器

2023-06-15 16:06:07 260人浏览 安东尼
摘要

这篇文章给大家分享的是有关linux中如何使用Sed文本编辑器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Sed 缺少通常的文本框,而是按照用户的命令直接写入到文件上。sed 命令是为 AT&

这篇文章给大家分享的是有关linux中如何使用Sed文本编辑器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Sed 缺少通常的文本框,而是按照用户的命令直接写入到文件上。

sed 命令是为 AT&T 最初的 Unix 操作系统第 7 版创建的,此后,可能每一个 Unix 和 Linux 操作系统都包含了它。sed 应用程序是一个 流编辑器,与文本编辑器不同的是,它不会打开一个视觉缓冲区,将文件的数据加载到其中进行处理。相反,它根据在终端输入的命令或脚本中的一系列命令,逐行对文件进行操作。

安装

如果你使用的是 Linux、BSD 或 MacOS,那么你已经安装了 GNU 或 BSD 版的 sed。这是两个不同的原始 sed 命令的重新实现,虽然它们很相似,但也有一些小的区别。GNU sed 通常被认为是功能最丰富的 sed,而且它在这些平台上都可以广泛使用。

如果你找不到 GNU sed(在非 Linux 系统上通常被称为 gsed),那么你可以从 GNU 网站上下载它的源代码。安装 GNU sed 的好处是,可以使用它的额外功能,但它也可以被限制为只符合 sed 的 POSIX 规范,如果你需要移植性的话。

windows 上,你可以用 Chocolatey 来安装 GNU sed

Sed 如何工作

sed 应用程序一次只处理一行。因为它没有视觉显示,所以它在内存中创建了一个模式空间:一个包含输入流的当前行的空间(去掉任何尾部的换行符)。一旦填充了模式空间,你对 sed 的指令就会被执行。有时你的指令是有条件的,有时是无条件的,所以这些指令的结果取决于你如何使用 sed

当命令结束时,sed 会将模式空间的内容打印到输出流中。默认的输出流是标准输出,但可以将其重定向到一个文件,甚至使用 --in-place=.bak 选项重定向到同一个文件中。

然后再从下一个输入行开始循环。

sed命令的语法是:

$ sed --options [optional SCRIPT] [INPUT FILE or STREAM]
找到你要编辑的内容

可视化编辑器中,你通常不需要考虑太多,就能在文本文件中找到你想要修改的内容。你的眼睛(或屏幕阅读器)会扫描文本,找到你想改变的单词或你想插入或删除文本的地方,然后你就可以开始输入了。而 sed 没有交互模式,所以你需要告诉它必须满足什么条件才能运行特定的命令。

在这些例子中,假设一个名为 example.txt 的文件包含了这样的文字:

helloworldThis is line three.Here is the final line.
行号

指定行号告诉 sed 只对文件中的那一行进行操作。

例如,下面这条命令选择文件的第 1 行并打印出来。因为 sed 在处理后的默认操作也是打印一行到标准输出,这样做的效果就是重复第一行:

$ sed '1p' example.txthellohelloworldThis is line three.Here is the final line.

你也可以步进式指定行号。例如,1~2 表示每两行选择一行(“从第一行开始每两行选择一行”)。指令 1~3 表示从第一行开始,每三行选择一行:

$ sed '1p' example.txthellohelloworldThis is line three.Here is the final line.Here is the final line.
行定位

你可以通过使用 $ 作为选择器,只对文件的最后一行进行操作:

$ sed '$p' example.txthelloworldThis is line three.Here is the final line.Here is the final line.

在 GNU sed 中,你可以选择多行(例如,sed '1,$p' 打印第一行和最后一行)。

反转

任何数字或位置的选择,你都可以用感叹号(!)字符反转。下面这将选择除第一行以外的所有行:

$ sed '1!p' example.txthelloworldworldThis is line three.This is line three.Here is the final line.Here is the final line.
模式匹配

你可以把模式匹配想象成文字处理器或浏览器中的查找操作。你提供一个词(一个 模式),然后选择了结果。模式匹配的语法是 /pattern/

$ sed '/hello/p' example.txthellohelloworldThis is line three.Here is the final line.$ sed '/line/p' example.txthelloworldThis is line three.This is line three.Here is the final line.Here is the final line.

用 Sed 编辑

一旦你找到了你要编辑的内容,你就可以执行你想要的任何操作。你可以用 sed 中的命令来执行编辑。sed 中的命令不是 sed 命令本身。如果这样说有帮助的话,可以把它们看作是“动作”或“动词”或“指令”。

sed 中的命令是单个字母,例如前面例子中使用的打印命令的 p。它们一开始可能很难记忆,但和所有事情一样,你会随着练习而了解它们。

p 代表打印

p 指令打印当前模式空间中的任何内容。

d 用于删除

d 指令删除模式空间:

$ sed '$d' example.txthelloworldThis is line three.$ sed '1d' example.txtworldThis is line three.Here is the final line.
s 用于搜索和替换

s 命令搜索一个模式并将其替换为其他东西。这可能是 sed 最流行和最随意的用法,而且它通常是用户学习的第一个(有时也是唯一的)sed 命令。几乎可以肯定它是文本编辑中最有用的命令:

$ sed 's/world/opensource.com/' example.txthelloopensource.comThis is line three.Here is the final line.

在你的替换文本中,也可以使用一些特殊的功能。例如,\L 将替换文本转换为小写,\l 则只转换下一个字符。还有其他一些功能,列在 sed 文档中(你可以用 info sed 命令查看)。

替换子句中的特殊字符 & 指的是匹配到的模式:

$ sed 's/is/\U&/' example.txthelloworldThIS is line three.Here IS the final line.

你也可以通过特殊的标志来影响 s 如何处理它找到的内容。g(应该是指 全局)标志告诉 s 对行上找到的所有匹配项进行替换,而不仅仅是第一个匹配项:

$ sed 's/is/\U&/g' example.txthelloworldThIS IS line three.Here IS the final line.

其他重要的标志还包括用一个数字来表示要影响第几个出现的匹配模式:

$ sed 's/is/\U&/2' example.txthelloworldThis IS line three.Here is the final line.

w 标志,后面跟着一个文件名,_只有_在有变化的情况下,才会将匹配的行写入文件:

$ sed 's/is/\U&/w sed.log' example.txthelloworldThIS is line three.Here IS the final line.$ cat sed.logThIS is line three.Here IS the final line.

标志可以组合:

$ sed 's/is/\U&/2w sed.log' example.txthelloworldThis IS line three.Here is the final line.$ cat sed.logThis IS line three.

脚本

有很多很棒的网站都有 sed “单行脚本”,它们给你提供了面向任务的 sed 命令来解决常见的问题。然而,自己学习 sed 可以让你写出自己的单行脚本,而且这些单行脚本可以根据你的具体需求来定制。

sed 的脚本可以在终端中写成一行,也可以保存到文件中,然后用 sed 本身执行。我倾向于把小脚本写成一个命令,因为我发现自己在现实生活中很少重复使用 sed 命令。当我写一个 sed 脚本时,通常都是针对一个文件的。例如,在写完这篇文章的初稿后,我用 sed 来规范 “sed” 的大小写,而这是我可能永远也不会再做的任务。

你可以向 sed 发出一系列不同的命令,用分号(;)分开。

$ sed '3t ; s/line/\U&/' example.txthelloworldThis is LINE three.This is the final line.

带括号的范围改变

你也可以用大括号({})限制哪些结果受到影响。当你将 sed 命令用大括号括起来时,它们只适用于特定的选择。例如,“line” 字出现在样本文本的两行中。你可以通过声明所需的匹配条件($ 表示最后一行),并将你希望执行的 s 命令放在紧随其后的括号中,强制 sed 只影响最后一行:

$ sed '$ {s/line/\U&/}' example.txthelloworldThis is line three.This is the final LINE.

感谢各位的阅读!关于“linux中如何使用Sed文本编辑器”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: linux中如何使用Sed文本编辑器

本文链接: https://www.lsjlt.com/news/280952.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux中如何使用Sed文本编辑器
    这篇文章给大家分享的是有关linux中如何使用Sed文本编辑器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Sed 缺少通常的文本框,而是按照用户的命令直接写入到文件上。sed 命令是为 AT&...
    99+
    2023-06-15
  • 如何理解Linux基础命令中文本流编辑sed命令
    如何理解Linux基础命令中文本流编辑sed命令,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。与vim不同,sed是一种非交互式的文本编辑器,同时它又是面向字符流的,每行数...
    99+
    2023-06-16
  • linux中如何使用屏幕文本编辑器Vi
    这篇文章主要介绍了linux中如何使用屏幕文本编辑器Vi,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux系统提供了一个完整的编辑器家族系列,如Ed、Ex、Vi和Ema...
    99+
    2023-06-17
  • 如何在Linux上使用JOE文本编辑器
    这篇文章将为大家详细讲解有关如何在Linux上使用JOE文本编辑器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。安装在 Linux 上,你也许能在你的发行版软件仓库中找到 JOE。虽然它有点小众,并不是所...
    99+
    2023-06-15
  • Linux中怎么使用vi文本编辑器
    这篇文章主要介绍“Linux中怎么使用vi文本编辑器”,在日常操作中,相信很多人在Linux中怎么使用vi文本编辑器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中...
    99+
    2023-03-08
    linux vi
  • Linux 使用vi文本编辑器详解
    目录 前言一.vi文本编辑器1.使用vi文本编辑器2.vi编辑器的工作模式3.命令模式中的基本操作(1)模式切换(2)移动光标(3)复制、粘贴和删除(4)查找文件内容(5)撤销编辑及保存和退出4.末行模式中的基...
    99+
    2023-03-06
    Linux 使用vi文本编辑器 linux操作系统vi文本编辑器 linux的vi编辑器命令
  • Linux 使用vi文本编辑器详解
    目录 前言一.vi文本编辑器1.使用vi文本编辑器2.vi编辑器的工作模式3.命令模式中的基本操作(1)模式切换(2)移动光标(3)复制、粘贴和删除(4)查找文件内容(5)...
    99+
    2023-03-06
    Linux 使用vi文本编辑器 linux操作系统vi文本编辑器 linux的vi编辑器命令
  • Linux中如何使用sed文本处理命令
    Linux中如何使用sed文本处理命令,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。sed对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk有点像。s...
    99+
    2023-06-12
  • linux常用的文本编辑器
    Linux常用的文本编辑器有以下几个:1. Vim:Vim 是一个功能强大的文本编辑器,它支持多种编辑模式,可以方便地编辑各种文本文...
    99+
    2023-09-20
    linux
  • linux文本编辑器怎么用
    Linux中有许多文本编辑器可供选择,每个编辑器都有自己的特点和用法。以下是一些常用的Linux文本编辑器及其简单用法:1. Vim...
    99+
    2023-09-06
    linux
  • 如何在文本编辑器中编辑HTML文件
    HTML是一种标记语言,用于创建网页和其他文档。如果你想学习HTML,在你的计算机上需要有一个文本编辑器,这篇文章将介绍如何在文本编辑器中编辑HTML文件,并提供一些提示和技巧。选择文本编辑器首先,你需要选择一个文本编辑器,它应该是可以在你...
    99+
    2023-05-14
  • SED单行脚本快速参考中文版(Unix 流编辑器)
    英文标题:USEFUL ONE-LINE SCRIPTS FOR SED (Unix stream editor) 原标题:HANDY ONE-LINERS FOR SED (Unix stream edi...
    99+
    2022-06-04
    编辑器 脚本 中文版
  • Shell文本中如何使用sed
    小编给大家分享一下Shell文本中如何使用sed,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!sed 是 stream editor 的缩写,流编辑器,主要用于对...
    99+
    2023-06-09
  • Linux文本编辑器Jed怎么用
    本篇文章为大家展示了Linux文本编辑器Jed怎么用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在这篇文章中,我将介绍 Jed,它是一个基于终端的编辑器,它的特点是有一个方便的下拉菜单,这让那些刚...
    99+
    2023-06-28
  • Linux使用文本编辑器vi常用命令
    vi/vim是什么? Linux世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的Linux发行版系统上都有vi编辑器,因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了,非常方便。vi就是...
    99+
    2022-06-04
    编辑器 文本 常用命令
  • 如何使用JAVA写文本编辑器
    本篇内容介绍了“如何使用JAVA写文本编辑器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!再来分析一下,最后一个Menu,里面有几个按钮,不...
    99+
    2023-06-25
  • Vue中如何使用tiptap富文本编辑器
    Vue中如何使用tiptap富文本编辑器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。为什么使用tiptap?市面上有不少富文...
    99+
    2022-10-19
  • Vue.js中如何使用Ueditor富文本编辑器
    这篇文章将为大家详细讲解有关Vue.js中如何使用Ueditor富文本编辑器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 总体思路1.1 模块化vue...
    99+
    2022-10-19
  • Linux中文本编辑vim怎么用
    这篇文章将为大家详细讲解有关Linux中文本编辑vim怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vim是功能强大的文本编辑器,是vi的增强版。vim [options] [f...
    99+
    2023-06-16
  • Linux下如何使用sed命令切割文本
    这篇文章主要介绍了Linux下如何使用sed命令切割文本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。sed是一个流(stream)编辑器,每次读取文本中的一行,放到内存的缓...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作