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

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

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

The Sed change command

cat -n inputfile | sed -e '

/systemd/c\

# :REMOVED:

s/:.*// # This will NOT be applied to the "changed" text

'

如果改变命令与一个地址范围关联,当到达范围的最后一行时,这个文本将仅输出一次。这在某种程度上成为 Sed 命令将被重复应用在地址范围内所有行这一惯例的一个例外情况:

cat -n inputfile | sed -e '

19,22c\

# :REMOVED:

s/:.*// # This will NOT be applied to the "changed" text

'

因此,如果你希望将改变命令重复应用到地址范围内的所有行上,除了将它封装到一个块中之外,你将没有其它的选择:

cat -n inputfile | sed -e '

19,22{c\

# :REMOVED:

}

s/:.*// # This will NOT be applied to the "changed" text

'

插入命令

插入命令(i\)将立即在输出中给出用户提供的文本。它并不以任何方式修改程序流或缓冲区的内容。

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

The Sed insert command

# display the first five user names with a title on the first row

sed < inputfile -e '

1i\

USER NAME

s/:.*//

5q

'

追加命令

当输入的下一行被读取时,追加命令(a\)将一些文本追加到显示队列。文本在当前循环的结束部分(包含程序结束的情况)或当使用 n 或 N 命令从输入中读取一个新行时被输出。

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

The Sed append command

与上面相同的一个示例,但这次是插入到底部而不是顶部:

sed < inputfile -e '

5a\

USER NAME

s/:.*//

5q

'

读取命令

这是插入一些文本内容到输出流的第四个命令:读取命令(r)。它的工作方式与追加命令完全一样,但不同的,它不从 Sed 脚本中取得硬编码到脚本中的文本,而是把一个文件的内容写入到一个输出上。

读取命令只调度要读取的文件。当清理追加队列时,后者才被高效地读取,而不是在读取命令运行时。如果这时候对这个文件有并发的访问读取,或那个文件不是一个普通的文件(比如,它是一个字符设备或命名管道),或文件在读取期间被修改,这时可能会产生严重的后果。

作为一个例证,如果你使用我们将在下一节详细讲述的写入命令,它与读取命令共同配合从一个临时文件中写入并重新读取,你可能会获得一些创造性的结果(使用法语版的 Shiritori 游戏作为一个例证):

printf "%s\n" "Trois p'tits chats" "Chapeau d' paille" "Paillasson" |

sed -ne '

r temp

a\

----

w temp

'

现在,在流输出中专门用于插入一些文本的 Sed 命令清单结束了。我的最后一个示例纯属好玩,但是由于我前面提到过有一个写入命令,这个示例将我们完美地带到下一节,在下一节我们将看到在 Sed 中如何将数据写入到一个外部文件。

替代的输出

Sed 的设计思想是,所有的文本转换都将写入到进程的标准输出上。但是,Sed 也有一些特性支持将数据发送到替代的目的地。你有两种方式去实现上述的输出目标替换:使用专门的写入命令(w),或者在一个替换命令(s)上添加一个写入标志。

写入命令

写入命令(w)会追加模式空间的内容到给定的目标文件中。POSIX 要求在 Sed 处理任何数据之前,目标文件能够被 Sed 所创建。如果给定的目标文件已经存在,它将被覆写。

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

The Sed write command

因此,即便是你从未真的写入到该文件中,但该文件仍然会被创建。例如,下列的 Sed 程序将创建/覆写这个 output 文件,那怕是这个写入命令从未被运行过:

echo | sed -ne '

q # 立刻退出

w output # 这个命令从未被运行

'

你可以将几个写入命令指向到同一个目标文件。指向同一个目标文件的所有写入命令将追加那个文件的内容(工作方式几乎与 shell 的重定向符 >> 相同):

sed < inputfile -ne '

/:\/bin\/false$/w server

/:\/usr\/sbin\/nologin$/w server

w output

'

cat server

替换命令的写入标志

在前面,我们已经学习了替换命令(s),它有一个 p 选项用于在替换之后输出模式空间的内容。同样它也提供一个类似功能的 w 选项,用于在替换之后将模式空间的内容输出到一个文件中:

sed < inputfile -ne '

s/:.*\/nologin$//w server

s/:.*\/false$//w server

'

cat server

注释

我无数次使用过它们,但我从未花时间正式介绍过它们,因此,我决定现在来正式地介绍它们:就像大多数编程语言一样,注释是添加软件不去解析的自由格式文本的一种方法。Sed 的语法很晦涩,我不得不强调在脚本中需要的地方添加足够的注释。否则,除了作者外其他人将几乎无法理解它。

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

栏目热文

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查看全文 >>

文档排行