sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
语法格式:
sed [option] 'command' file_name
sed [options] -f scriptfile file(s)
选项 | 说明 |
---|---|
-e | 多点编辑,可以执行多个子命令 |
-f | 可以从脚本中读取命令 |
-i | 直接编辑源文件 |
-r | 在命令中使用扩展表达式 |
-n | 只有经过特殊处理的行才会被输出 |
命令前通常跟的是行的选择规则,如行号选择、关键字匹配等。
命令 | 说明 |
---|---|
a:\ | 追加字符串,在选中的行后追加a命令后跟着的字符串为一行 |
c:\ | 替换行,使用c命令后的字符串替换选中的行 |
d | 删除,删除选中的行 |
i:\ | 插入字符串,在选中行之前插入i命令后跟着的字符串为一行 |
p:\ | print打印,打印当前选择的行到屏幕 |
s:\ | 替换字符串,用法:1,2s/old_str/new_str/g,g指定全面替换,也即替换行内所有匹配的值 |
w:\ | 写入文件,将匹配的行写入文件 |
s替换命令格式:sed '位置参数 s/pattern/replaced/[flag]'
其中flag选项用来影响替换规则:
选项 | 说明 |
---|---|
g | 全局替换 |
n | 替换行内匹配的第n个字符串 |
p | 替换第一个匹配的字符串,并且将缓冲区输出到标准输出 |
w | 替换第一个匹配的字符串,并且将改动的行输出到磁盘文件中 |
省缺 | 替换文本行第一个匹配字符串 |
命令示例:
sed '1,3p' a.txt #输出文件1-3行
sed '1~3p' a.txt #从第一行开始输出,步长为3
sed '1,$p' a.txt #输出第一行到最后一行
sed -i "s/letitia/hello world/g" `grep "letitia" -rl test1.txt`
sed '/^$/d' file #删除空白行
sed -n -e '1,/^ma/ s/l/L/g' -e '1,$ p' test1.txt
sed -n '/test/w file' example #将包含test的行写入文件file
网友评论