sed命令,一次处理一行内容。处理时把当前行存储在临时缓冲区中,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送到屏幕。接着处理下一行,直到文本结束。
sed 命令格式:sed 选项 '[n1[,n2]]动作'
选项:
-n 只有经过sed处理的那一行才会打印出来(删除操作不打印出来)
-e duo
-r 支持正则表达式
-i 直接修改文件内容(sed -i 动作 filename)
动作:
a 新增,a后面接的字符串在下一行出现
c 取代,
d 删除
i 插入
p 打印
s 替换
一:sed替换字符串
1.sed 字符串替换命令
sed 's/旧字符串/新字符串/'
只替换每行的第一个关键字,在末尾加g,可以替换每一个匹配的关键字
sed 's/旧字符串/新字符串/g'
2.三根反斜线也可以换成其他符号
sed 's%旧字符串%新字符串%g'
3.单引号是没有办法用\转义的,如果要处理的字符串中包含单引号,只要包命令中的单引号改成双引号
sed "s/旧字符串/新字符串/g"
4.sed处理过的输出是直接输出的屏幕上的,使用-i 参数直接在文件中替换
sed -i 's/旧字符串/新字符串/g' filename
5.多个替换可以在同一个命令中执行,用分号; 分隔即可
6.一些特殊的字符使用
^ 表示行首
$如果在三斜线中,表示行尾,但是在三斜线外表示最后一行
sed 's/^/2018/g' #在所有行首添加2018
sed 's/$/2018/g' #在所有行末添加2018
7.批量替换多个文件中的字符串
sed -i "s/旧字符串/新字符串/g" `grep 旧字符串 -rl dir`
二:sed 删除命令
sed '2d' filename
sed '5,$d' filename
sed '/test/d' filename #删除文件中包含test的行