您的位置:首页 > 运维架构 > Shell

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

2022-01-02 23:58 776 查看

前言

简单介绍一下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的其他命令

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: