sed

sed(stream editor),通常用来过滤文本,通常用于处理其他命令的输出和文本文件。对每行执行命令。

示例

选项 -n 静默模式

# ls -l | sed # 有输出
# ls -l | sed -n #无输出

命令 p 打印匹配行

ls -l | sed -n '/^-/p'

命令 d 删除行

# ls -l | sed '2d'  #删除第二行
# ls -l | sed '2,10d'  #删除2到10行
# ls -l | sed '/^-/d'  #删除匹配以-开头的行,使用正则表达式匹配行

命令 a 追加行

# ls -l | sed '2a11111111'

命令 i 插入行

# ls -l | sed '2i11111' #注意Mac下需要换行

选项 -i 修改读取的文件

# sed -i 's/aaa/bbb/g' kkk #kkk文件的内容被修改

选项 -e (连续)编辑模式

# ls -l | sed -e '/^-/d' -e '/2018/d'

命令 n 读取下一行,用n之后的命令处理新读入的行

# echo -e "111
222
333
444" | sed 'n;/111/p' #无输出
# echo -e "111
222
333
444" | sed 'n;/222/p' #输出222
# echo -e "111
222
333
444" | sed 'n;/333/p' #无输出
# echo -e "111
222
333
444" | sed 'n;/444/p' #输出444

命令 N 读取下一行,用N之后的命令处理读入的两行

# echo -e "111
222
333
444" | sed 'N;/111/p' 
111
222
# echo -e "111
222
333
444" | sed 'N;/222/p' 
111
222
# echo -e "111
222
333
444" | sed 'N;/333/p' 
333
444
# echo -e "111
222
333
444" | sed 'N;/444/p'
333
444

命令 w 写入文件

# ls -l | sed -n 'w kkk'

显示行号

# ls -l | sed '=' | sed 'N;s/
/ /' #需要分开写了,等号用来显示行号,N追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码
原文地址:https://www.cnblogs.com/nuoforever/p/13893627.html