sed是流编辑器,简单的说就是对输入只进行一次扫描,执行相应的操作,然后输出。通常是以行为单位,读入一行,处理操作,输出一行,输入可以是文件或管道,默认输出为标准输出。因此又可以称 "行编辑器“
比较适合用于需要重复处理的编辑任务,比如替换操作。
当前处理的行被缓存在 parttern space 模式空间中,处理完成,即从模式空间删除,加入新的行处理,如此循环。
sed的命令格式
NAME
sed -- stream editor
SYNOPSIS
sed [-Ealn] command [file ...]
sed [-Ealn] [-e command] [-f command_file] [-i extension] [file ...]
-a 没看明白
-l缓存输出的行,有啥用??
-n取消输出到标准输出
-e 接处理命令
-f 包含处理命令的文件
-i 在输入文件中本地处理,即会修改文件,因此接用于备份文件的后缀名,如果为空,则不备份之前的文件。
【file】 表示输入的文件
sed 命令 ,如果只有一个命令,可以不写-e ,如果有多个则应该在每天命令前加-e,或者统一写如脚本文件,每个命令用分号结尾。
sed指令可以用 单引号包含,或双引号包含,或者不用引号。一般用单引号,特殊字符需要使用 反斜扛。
但指令包含使用$var变量时,需要使用双引号。
XX>sed
abc
abc
如上所示为未指定输入,即输入为标准输入。处理时 模式空间中的内容,sed会自动输出到标准输出,因此输入abc,会输出abc。
-n 可以屏蔽输出。
XX>sed -n
abc
XX>sed -n p
abc
abccd
cd
p 表示打印处理的行,另外还可以指定需要输出的行
XX>sed -n 1p
abc
abccd
1p表示输出第一行后,第二行就不输出了 。
从文件输入处理内容,test为文件,内容为
line 1
line2
以下为测试的命令,结果未贴出。
589 sed -e '' test
590 sed -e 'p' test
583 sed -e 'p' ./test
584 sed -ne 'p' ./test
585 sed -ne 'p' test