0

0

流编辑器(SED):基础

WBOY

WBOY

发布时间:2024-03-20 15:11:22

|

657人浏览过

|

来源于每日运维

转载

流编辑器(sed):基础

SED,也称为流编辑器,是一个非常有用的工具。它用于搜索特定的单词或模式,然后对该单词或模式进行某些操作,或者换句话说,对其进行转换。在Windows中,SED也称为“查找”和“替换”功能。SED是Ubuntu自带的,所以不需要安装任何东西;只需开始使用它即可。在本教程中,我们将向您介绍如何使用SED或流编辑器。

“S”号指挥

在SED或流编辑器中最重要的命令是”s”命令。“s”代表替代品。语法如下:

的/regexp/替换/标志

因此,让我们使用一个名为”file.txt”的文件作为示例。下面是”file.txt”的样子,如果你跟踪它:


让我们用一个例子来说明“S”命令是如何工作的:

SED‘S/第一个/月亮/I’file.txt>moon.txt

当给出这样的表达时,它意味着:

    • S—它代表替代品。
    • first—在名为”file.txt”的文件中搜索的单词。
    • “月亮”—“第一个”被“月亮”取代。
    • 代表忽视.我们先忽略这一部分。
    • File.txt-SED将在其中搜索模式或单词的文件。在这种情况下,单词“First”将是:
    • 已在文件.txt中搜索

    • Moon.txt–当“first”一词被“Moon”替换时,它将被保存在“moon.txt”下。

在SED中,只有在第一个实例中将单词“first”替换为“moon”(这意味着如果“first”出现多次,仅第一次会被替换)。该命令在名为“file.txt”的文件中进行搜索,一旦替换完成,结果将被保存到“moon.txt”文件中。

这就是它看起来的样子:


请记住把”/”放在需要的地方。如果省略了”/”,SED将不接受该命令。

到目前为止,我们只用“遇到”一词代替了“第一次”。现在,假设我们想要将第三行中的单词“line”(多次出现–具体地说是四次)替换为单词“Angel”。

我们如何具体瞄准第三条线?我们使用以下命令:

SED‘3S/Line/Angel/I’file.txt>angel.txt

那么,这里刚刚发生了什么?好的,“3”指定行号。因此,它到了第三条线。然后,在名为“file.txt”的文件中用“line”替换“angel.txt”,并将转换后的文件保存为“angel.txt”。


如果我们想替换或转换行”3″和”4″呢?

Sed‘3,4s/line/Angel/I’file.txt>angel2.txt


注意,在前面的例子中,我们使用了”i”标志来表示ignore。现在,我们使用”g”标志来表示全局。

让我们用一个例子来说明”s”命令是如何工作的:

sed’s/line/sun/g ‘file.txt> sun. txt

当给出这样的表达时,它意味着:

G代表全球。请记住,在第一个例子中,当我们使用”i”标志时,只有一个替换。既然我们为global添加了一个”g”,这意味着到处都是替代品。所以,它不是说第一行,第二行,第三行和最后一行,而是说第一个太阳,第二个太阳,第三个太阳和最后一个太阳。它将整个文件中的字行(各处)替换为单词“sun”。


现在,如果我们想根据其中包含的单词来选择一行呢?好吧,我们可以看到”file.txt”的最后一行有”last”这个词。现在,假设我们想要”This is the last line”。这是最后一句话”。“这是最后一个鬼魂。这是最后一句话”。

我们写如下:

Sed‘/last/S/line/host/’file.txt>.ghost.txt

这里的”last”告诉SED查找包含单词”last”的行,然后在该行内将单词”line”替换为”ghost”。


现在,假设我们想要做相反的事情。假设我们希望没有“last”一词的每一行都将“line”一词更改为“host”。让我们写下以下内容:

请选择‘/最后/!S/行/幽灵/’文件.txt>.ghost 2.txt

正如你在这里看到的,除了最后一行(包含单词“last”)之外的每一行都用单词“line”替换了单词“ghost”。


我们也可以使用行号来实现这一点:

Sed‘3,4!S/行/夜/I’file.txt>night.txt

在这种情况下,第3行和第4行被省略,但每隔一行的单词“line”被单词“night”替换。

多个命令

那么,如果你有多个命令呢?你是宁愿一次一个做,还是一次全部做,以节省自己的时间和工作?

如果我们想把“第一”字改成“白天”,把“第二”字改成“夜”,把“其余”字改成“鬼”,该怎么办呢?我们使用分号来完成此操作。别忘了把分号放在最后!

请注意,你并不一定要把”i”标志或”ignore”标志,但你一定要把斜杠(/)放在转换短语后面。

现在,让我们用一个例子来验证它:

sed’s/first/day/;s/second/night/;s/third/ghost/;s/last/ghost/;’file.txt> combination.txt

结论

流编辑器或SED是一种选择单词或模式并对其进行转换的方法,它实际上相当于Windows的”find”和”replace”函数的命令行。SED命令可能会变得非常复杂,但如果你至少知道了基本原理,你已经准备好了!SED实际上是一个功能非常强大的工具。虽然我们不能在一个教程中涵盖所有这些,但我们涵盖了SED的基础知识。本质上,我们学会了如何使用”s”命令转换特定的单词,其中”s”代表替代词。我们可以用单词替换其他单词,选择性地选择一行替换,甚至否定它。无论哪种方式,这都是关于SED最简单的部分。

编码快乐!

相关专题

更多
windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

600

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1104

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

792

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

452

2023.08.02

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2349

2023.08.08

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

780

2023.08.10

windows boot manager
windows boot manager

windows boot manager无法开机的解决方法:1、系统文件损坏,使用Windows安装光盘或USB启动盘进入恢复环境,选择修复计算机,然后选择自动修复;2、引导顺序错误,进入恢复环境,选择命令提示符,输入命令"bootrec /fixboot"和"bootrec /fixmbr",然后重新启动计算机;3、硬件问题,使用硬盘检测工具进行扫描和修复;4、重装操作系统。本专题还提供其他解决

1489

2023.08.28

windows锁屏快捷键
windows锁屏快捷键

windows锁屏快捷键是Windows键+L、Ctrl+Alt+Del、Windows键+D、Windows键+P和Windows键+R。本专题为大家提供windows相关的文章、下载、课程内容,供大家免费下载体验。

1632

2023.08.30

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

11

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python 教程
Python 教程

共137课时 | 7.5万人学习

Java 教程
Java 教程

共578课时 | 47.8万人学习

HTML教程
HTML教程

共500课时 | 4.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号