sed 随笔
sed 概述
- sed 是一款流编辑工具,用来对文本进行过滤与替换工作。
- sed 通过输入读取文件内容,但一次仅读取一行内容进行某些指令处理后输出,所以 sed更适合于处理大数据文件
- sed 是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。
sed 执行流程
Sed 脚本执行遵从下面简单易记的顺序: Read,Execute,Print,Repeat(读取,执行,打印,重复),
简称 REPR
- 通过文件或管道读取文件内容。
- sed 并不直接修改源文件,而是将读入的内容复制到缓冲区中,我们称之为模式空间(pattern space)。
- 根据 sed 的指令对模式空间中的内容进行处理并输出结果,默认输出至标准输出即屏幕上。
分析脚本执行顺序:
读取一行到模式空间(sed 内部的一个临时缓存,用于存放读取到的内容)
在模式空间中执行命令。如果使用了{ } 或 –e 指定了多个命令, sed 将依次执行每个命令
打印模式空间的内容,然后清空模式空间
重复上述过程,直到文件结束
如图:
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。
具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。
前面说到sed不会修改文件,那么现在我们可以知道是为什么了?是因为sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
sed 使用方法
sed 使用方法
sed 全称 stream editor 基本功能 增删改查 过滤 取行
语法格式:
sed [options] [sed-commands] [input-file]
sed 选项 sed命令 输入文件
input-file 可以是标准输入 也可以是 文件
# sed 常见的语法格式有两种,一种是命令行模式,一种是脚本模式
sed的命令格式:sed [option] 'sed command'filename
sed的脚本格式:sed [option] -f 'sed script'filename
sed options(选项)
-n :只打印模式匹配的行 -e :直接在命令行模式上进行sed动作编辑,此为默认选项 -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作 -r :支持扩展表达式 -i :直接修改文件内容
sed 读取 file1 内容,追加到 file2 文件匹配行下边
options | sed-commands |
sed 命令 |
注释 |
-i |
r | sed -i '' '/test/r s3迁移shell-user.sh' a |
将‘s3迁移shell-user.sh’文件内容追加到 a 文件 ‘test’ 行下 备注:在linux下不需要 -i 后的 '' ,在mac中需要这样写。 原因是Mac中用i命令进行替换时,强制要求备份 sed -i '一个路径' 's/aaa/bbb/' test.txt 如果不想备份,可以直接使用 sed -i '' 's/aaa/bbb/' test.txt,路径使用''单引号代替 |
本文来自博客园, 作者:Star-Hitian, 转载请注明原文链接:https://www.cnblogs.com/Star-Haitian/p/7456461.html