当前位置:首页 > 实用技巧 >

linuxsed命令使用教程(sed命令在linux中的作用)

来源:原点资讯(www.yd166.com)时间:2023-11-18 03:38:30作者:YD166手机阅读>>

The Sed comment command

不过,和 Sed 的其它部分一样,注释也有它自己的微妙之处。首先并且是最重要的,注释并不是语法结构,但它是真正意义的 Sed 命令。注释虽然是一个“什么也不做”的命令,但它仍然是一个命令。至少,它是在 POSIX 中定义了的。因此,严格地说,它们只允许使用在其它命令允许使用的地方。

大多数 Sed 实现都通过允许行内命令来放松了那种要求,就像在那个文章中我到处都使用的那样。

结束那个主题之前,需要说一下 #n 注释(# 后面紧跟一个字母 n,中间没有空格)的特殊情况。如果在脚本的第一行找到这个精确注释,Sed 将切换到静默模式(即:清除自动输出标志),就像在命令行上指定了 -n 选项一样。

很少用得到的命令

现在,我们已经学习的命令能让你写出你所用到的 99.99% 的脚本。但是,如果我没有提到剩余的 Sed 命令,那么本教程就不能称为完全指南。我把它们留到最后是因为我们很少用到它。但或许你有实际使用案例,那么你就会发现它们很有用。如果是那样,请不要犹豫,在下面的评论区中把它分享给我们吧。

行数命令

这个 = 命令将向标准输出上显示当前 Sed 正在读取的行数,这个行数就是行计数器(LC)的内容。没有任何方式从任何一个 Sed 缓冲区中捕获那个数字,也不能对它进行输出格式化。由于这两个限制使得这个命令的可用性大大降低。

linuxsed命令使用教程,sed命令在linux中的作用(21)

The Sed line number command

请记住,在严格的 POSIX 兼容模式中,当在命令行上给定几个输入文件时,Sed 并不重置那个计数器,而是连续地增长它,就像所有的输入文件是连接在一起的一样。一些 Sed 实现,像 GNU Sed,它就有一个选项可以在每个输入文件读取结束后去重置计数器。

明确打印命令

这个 l(小写的字母 l)作用类似于打印命令(p),但它是以精确的格式去输出模式空间的内容。以下引用自 POSIX 标准 :

在 XBD 转义序列中列出的字符和相关的动作(\\、\a、\b、\f、\r、\t、\v)将被写为相应的转义序列;在那个表中的 \n 是不适用的。不在那个表中的不可打印字符将被写为一个三位八进制数字(在前面使用一个反斜杠 \),表示字符中的每个字节(最重要的字节在前面)。长行应该被换行,通过写一个反斜杠后跟一个换行符来表示换行位置;发生换行时的长度是不确定的,但应该适合输出设备的具体情况。每个行应该以一个 $ 标记结束。

linuxsed命令使用教程,sed命令在linux中的作用(22)

The Sed unambiguous print command

我怀疑这个命令是在非 8 位规则化信道 上交换数据的。就我本人而言,除了调试用途以外,也从未使用过它。

移译命令

移译(transliterate)(y)命令允许从一个源集到一个目标集映射模式空间的字符。它非常类似于 tr 命令,但是限制更多。

linuxsed命令使用教程,sed命令在linux中的作用(23)

The Sed transliterate command

# The `y` c0mm4nd 1s for h4x0rz only

sed < inputfile -e '

s/:.*//

y/abcegio/48<3610/

'

虽然移译命令语法与替换命令的语法有一些相似之处,但它在替换字符串之后不接受任何选项。这个移译总是全局的。

请注意,移译命令要求源集和目标集之间要一一对应地转换。这意味着下面的 Sed 程序可能所做的事情并不是你乍一看所想的那样:

# 注意:这可能并不如你想的那样工作!

sed < inputfile -e '

s/:.*//

y/[a-z]/[A-Z]/

'

写在最后的话

# 它要做什么?

# 提示:答案就在不远处...

sed -E '

s/.*\W(.*)/\1/

h

${ x; p; }

d' < inputfile

我们已经学习了所有的 Sed 命令,真不敢相信我们已经做到了!如果你也读到这里了,应该恭喜你,尤其是如果你花费了一些时间,在你的系统上尝试了所有的不同示例!

正如你所见,Sed 是非常复杂的,不仅因为它的语法比较零乱,也因为许多极端案例或命令行为之间的细微差别。毫无疑问,我们可以将这些归结于历史的原因。尽管它有这么多缺点,但是 Sed 仍然是一个非常强大的工具,甚至到现在,它仍然是 Unix 工具箱中为数不多的大量使用的命令之一。是时候总结一下这篇文章了,没有你们的支持我将无法做到:请节选你对喜欢的或最具创意的 Sed 脚本,并共享给我们。如果我收集到的你们共享出的脚本足够多了,我将会把这些 Sed 脚本结集发布!


via: https://linuxhandbook.com/sed-reference-guide/

作者: Sylvain Leroux 选题: lujun9972 译者: qhwdw 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出

点击“了解更多”可访问文内链接

栏目热文

selinux是如何管理进程的(简述selinux的三种工作模式和功能)

selinux是如何管理进程的(简述selinux的三种工作模式和功能)

进程的概念与查看进程-运行中的程序,从程序开始运行到终止的整个生命周期是可管理的 查看命令 ps -e 表示所有...

2023-11-18 03:36:27查看全文 >>

linux中sed命令用法(sed命令在linux中的作用)

linux中sed命令用法(sed命令在linux中的作用)

作用sed命令是一个非交互式的行文本编辑器,它能对文件内容进行编辑,默认每次处理文本文件中所匹配到一行内容到模式空间,然...

2023-11-18 03:44:39查看全文 >>

linux利器学习之sed命令教程(linuxsed命令详细教程学习)

linux利器学习之sed命令教程(linuxsed命令详细教程学习)

简介sed命令是Linux中的一种文本编辑工具,它使用流编辑器(stream editor)的方式对文本进行处理,它可以...

2023-11-18 03:32:06查看全文 >>

linuxsed的详细讲解与使用方法(linux教程sed命令的用法教程)

linuxsed的详细讲解与使用方法(linux教程sed命令的用法教程)

概述sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作。sed是按行来处理文本内容的。...

2023-11-18 04:06:16查看全文 >>

selinux开启宽松模式(三星selinux开启宽松模式)

selinux开启宽松模式(三星selinux开启宽松模式)

1、安装mysql将mysql镜像文件传到root目录下。2、关闭防火墙浏览器访问,关闭防火墙,用setenforce ...

2023-11-18 03:22:20查看全文 >>

linux运维之sed使用教程交流(linuxsed命令详细教程学习)

linux运维之sed使用教程交流(linuxsed命令详细教程学习)

简介 Sed是一款流编辑工具,用来对文本进行过滤与替换操作,特别是当你想要对几十个配置文件做统一修改时,你会感受到Sed...

2023-11-18 03:48:37查看全文 >>

linuxsed命令详解(sed命令在linux中的作用)

linuxsed命令详解(sed命令在linux中的作用)

一 基础介绍1.1 功能sed(流编辑器)是一种强大的编辑器,用于处理文本数据。1.2 语法sed [选项] '...

2023-11-18 04:05:12查看全文 >>

linux怎么添加sed命令(linux教程sed命令的用法教程)

linux怎么添加sed命令(linux教程sed命令的用法教程)

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言...

2023-11-18 03:22:01查看全文 >>

气压带风带的分布图示(气压带风带的分布特点)

气压带风带的分布图示(气压带风带的分布特点)

知识点气压带、风带假设地球是一个光滑的球体,则地球上存在着“七压六带”。春分和秋分时,气压带的纬度位置为:①赤道低气压带...

2023-11-18 03:59:18查看全文 >>

气压带风带的分布有何特点(气压带风带的特点及影响)

气压带风带的分布有何特点(气压带风带的特点及影响)

知识点1、亚洲、欧洲的气候分布亚欧大陆是世界上最大的大陆,地跨热带、亚热带和寒带,气候类型多样(11种气候),其中季风气...

2023-11-18 04:01:04查看全文 >>

文档排行