重新点亮shell————sed的替换[十]
前言
简单介绍一下sed 和 awk。
正文
这两个和vim的区别:
vim 是交互式和 他们是非交互式
vim是文件操作模式与他们是行交互模式
sed
sed 的 模式空间。
sed的基本工作方式是:
-
将文件以行为单位读取到内存(模式空间)
-
使用sed的每个脚本对该行进行操作
-
处理完成后输出该行
替换命令s:
这里-e 是可以替换几个,而这里-i就是替换完写入到文件中。
如果要替换的是/,那么可以使用!替换/做分割。
多个替换可以用-e 隔开,同样可以这样:
这里s 是替换,那么如果将匹配的内容置为空呢?
这样既可。
替换是支持正则表达的,但是如果要支持扩展的正则表达,需要加上-r。
就是前面提及的那些+ | 这些扩展包。
有一个值得注意的是就是|,这个表示或的意思,但是如果是aa|bb,这个表示的是 aab 或者 abb的意思,而不是aa或者bb,这个得加();
() 这个括号其实是元组的概念,如果想看正则,可以看我的正则分类的那几篇。
我们可以发现上面的替换,都只是替换某一行的第一个,但是要替换一行的全部呢?需要加一个/g。
例如:
那么还有一些替换需要介绍的。
标志位:
这个g是全部的意思,但是如果只想匹配前两个呢?
这个p,就是匹配成功的行会被打印:
同样上面也看到了匹配成功的行多打印了,但是有一个问题就是希望只打印匹配成功的行怎么办?
然后这个-w,就是匹配成功的行写入到文件中去。
寻址:
分组:
sed 脚本文件:
结
下一节sed的其他命令