轻量级流编辑器
sed | 选项 | '动作' | 文件名 |
-n | 一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令的处理的行输出到屏幕上 | ||
-e | 允许对输入数据应用多条sed命令编辑 | ||
-I | 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出 (会修改原数据) |
动作 | |
a\ | 追加,在当前行后添加一行或多行,添加多行时,除最后一行外,每行末尾需要用"\"代表数据结尾 |
c\ | 行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用"\"代表数据未完结 |
d | 删除,删除指定的行 |
p | 打印,输出指定的行 |
s | 字串替换,用一个字符串替换另外一个字符串,格式为“行范围s/新字串/g”(和vim中替换格式类似) |
sed '2p' FileName
查看文件第二行(但是会把整个文件再输出一遍)
sed -n '2p' FileName
只输出第二行
sed '2,4d' FileName
不输出第二行到第四行,在不加"-i"的情况下不对文件进行修改
sed '2a hello' FileName
第二行后追加hello
sed '2i hello' \ world FileName
第二行前插入两行数据
sed '2c hello' FileName
第二行替换为hello(数据替换)
sed 's/旧字串/新字串/g' FileName(/g代表全局替换(global),就是有多少次替换多少次)
sed '3s/XX/YY/g' FileName
第三行中,把XX替换为YY
sed -I '3s/XX/YY/g' FileName
sed操作的数据直接写入文件
sed -e 's/XX//g;s/YY//g' FileName
同时把XX和YY替换为空
举例
文件a的内容为
a b c d
e f g h
cat a | sed 's/ /t/g'
输出
atbtctdt
etftgtht
cat a | sed 's/ /t/'
atb c d
e f g h