重新点亮shell————sed的替换[十]

Posted 程序员其实就是一个写文档的工作,代码只是文档的一部分,一切皆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重新点亮shell————sed的替换[十]相关的知识,希望对你有一定的参考价值。

前言

简单介绍一下sed 和 awk。

正文

这两个和vim的区别:

vim 是交互式和 他们是非交互式

vim是文件操作模式与他们是行交互模式

sed

sed 的 模式空间。

sed的基本工作方式是:

  1. 将文件以行为单位读取到内存(模式空间)

  2. 使用sed的每个脚本对该行进行操作

  3. 处理完成后输出该行

替换命令s:

这里-e 是可以替换几个,而这里-i就是替换完写入到文件中。

如果要替换的是/,那么可以使用!替换/做分割。

多个替换可以用-e 隔开,同样可以这样:

这里s 是替换,那么如果将匹配的内容置为空呢?

这样既可。

替换是支持正则表达的,但是如果要支持扩展的正则表达,需要加上-r。

就是前面提及的那些+ | 这些扩展包。

有一个值得注意的是就是|,这个表示或的意思,但是如果是aa|bb,这个表示的是 aab 或者 abb的意思,而不是aa或者bb,这个得加();

() 这个括号其实是元组的概念,如果想看正则,可以看我的正则分类的那几篇。

我们可以发现上面的替换,都只是替换某一行的第一个,但是要替换一行的全部呢?需要加一个/g。

例如:

那么还有一些替换需要介绍的。

标志位:

这个g是全部的意思,但是如果只想匹配前两个呢?

这个p,就是匹配成功的行会被打印:

同样上面也看到了匹配成功的行多打印了,但是有一个问题就是希望只打印匹配成功的行怎么办?

然后这个-w,就是匹配成功的行写入到文件中去。

寻址:

分组:

sed 脚本文件:

下一节sed的其他命令

以上是关于重新点亮shell————sed的替换[十]的主要内容,如果未能解决你的问题,请参考以下文章

shell :linux sed 批量替换字符串

Sed用shell变量替换[重复]

linux 给文件替换字符串/替换内容/替换某行 (shell,sed)

shell sed 问题

shell脚本之sed使用----替换变量转义字符

[Linux Shell学习系列十四]sed和awk-6.awk与Shell