sed 命令学习笔记
2013-05-28 00:00
225 查看
1.sed简介
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空 间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入 文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件
2.定址
定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。
如果地址是数字这表示行号,如果是“$"则表示最后一行,例如:
3命令与选项
sed命令告诉sed如何处理由地址指定的各输入行,如果没有指定地址则处理所有的输入行。
3.1 sed命令
3.2 sed选项
4范例
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空 间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入 文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件
2.定址
定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。
如果地址是数字这表示行号,如果是“$"则表示最后一行,例如:
#打印第三行 sed -n '3p' example #查看文件的10到30行 sed -n '10,30p' example #从第10行查看到末尾 sed -n '10,$' example #打印从包含“first”的行 到包含“python”的行 sed -n '/first/,/python/p' example #删除包含“linux”的行到第10行 sed ‘/linux/,10d’ example #删除example文件所有包含test的行 sed '/test/'d example
3命令与选项
sed命令告诉sed如何处理由地址指定的各输入行,如果没有指定地址则处理所有的输入行。
3.1 sed命令
命令 | 功能 |
a\ | 在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行 |
c\ | 用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行 |
i\ | 在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行 |
d | 删除行 |
h | 把模式空间里的内容复制到暂存缓冲区 |
H | 把模式空间里的内容追加到暂存缓冲区 |
g | 把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容 |
G | 把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面 |
l | 列出非打印字符 |
p | 打印行 |
n | 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理 |
q | 结束或退出sed |
r | 从文件中读取输入行 |
! | 对所选行以外的所有行应用命令 |
s | 用一个字符串替换另一个 |
g | 在行内进行全局替换 |
w | 将所选的行写入文件 |
x | 交换暂存缓冲区与模式空间的内容 |
y | 将字符替换为另一字符(不能对正则表达式使用y命令) |
选项 | 功能 |
-e | 进行多项编辑,即对输入行应用多条sed命令时使用 |
-n | 取消默认的输出 |
-f | 指定sed脚本的文件名 |
#将文件tt中的a替换成mytest sed 's/a/mytest/g' tt #将文件tt中的a替换为you sed 's/a/you/g' tt #如果没有g标记,则只有每行第一个匹配的test被替换成mytest。 #只替换前两行 sed '1,2s/a/you/g' tt #选项-e用于进行多重编辑。 sed -e '1,10d' -e 's/My/Your/g' tt #第一重编辑删除第1-10行。第二重编辑将出现的所有My替换为Your。 #因为是逐行进行这两项编辑(即这两个命令都在模式空间的当前行上执行),所以编辑命令的顺序会影响结果。 #读命令,使用该命令将特定的文件内容添加到另一文件特定的行后 sed '/a/r tt1' tt #如果读到的tt文件中的行有a,则将tt1文件中的内容添加到匹配行的后面 #将读到的内容添加到tt1文件中 sed '/a/w tt1' tt #读取tt文件,将包含“a”的下一行中的“v”替换成mytest sed '/a/{n;s/v/mytest/;}' tt #读到文件tt中的行包含a,则在其后面加上“you” sed 's/a/&you/g' tt sed '1,20y/hrwang12/HRWANG^$/' #将1到20行内,所有的小写hrwang转换成大写,将1转换成^,将2转换成$。 #正则表达式元字符对y命令不起作用。斜线可以被替换成其它的字符。
相关文章推荐
- shell脚本学习笔记之sed命令用法
- sed命令学习笔记
- Linux命令shell脚本编程学习笔记-18章初识sed和gawk
- linux命令sed学习笔记
- sed命令学习笔记
- Linux学习笔记_基本命令复习(seq sed awk)
- sed学习笔记二--高级命令
- Linux学习笔记_三剑客命令的sed命令复习(sed的替换功能用法)
- LINUX系统学习笔记命令sed
- sed学习笔记-3(命令DPhHgGxbtnN)
- 个人学习笔记--sed命令(基础篇)
- sed命令 学习笔记
- 个人学习笔记--sed命令(进阶篇)
- Linux Sed命令学习笔记
- 菜鸟的Linux学习笔记之命令grep
- Sed学习笔记
- 学习笔记之sed用法
- Mongodb学习笔记二:常用命令
- 【转】ant学习笔记之(ant执行命令的详细参数和Ant自带的系统属性)
- Memcached(查找命令)-- 学习笔记(四)