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 '2a\11111111'
命令 i 插入行
# ls -l | sed '2i\11111' #注意Mac下需要换行哦
选项 -i 修改读取的文件
# sed -i 's/aaa/bbb/g' kkk #kkk文件的内容被修改
选项 -e (连续)编辑模式
# ls -l | sed -e '/^-/d' -e '/2018/d'
命令 n 读取下一行,用n之后的命令处理新读入的行
# echo -e "111\n222\n333\n444" | sed 'n;/111/p' #无输出 # echo -e "111\n222\n333\n444" | sed 'n;/222/p' #输出222 # echo -e "111\n222\n333\n444" | sed 'n;/333/p' #无输出 # echo -e "111\n222\n333\n444" | sed 'n;/444/p' #输出444
命令 N 读取下一行,用N之后的命令处理读入的两行
# echo -e "111\n222\n333\n444" | sed 'N;/111/p' 111 222 # echo -e "111\n222\n333\n444" | sed 'N;/222/p' 111 222 # echo -e "111\n222\n333\n444" | sed 'N;/333/p' 333 444 # echo -e "111\n222\n333\n444" | sed 'N;/444/p' 333 444
命令 w 写入文件
# ls -l | sed -n 'w kkk'
显示行号
# ls -l | sed '=' | sed 'N;s/\n/ /' #需要分开写了,等号用来显示行号,N追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码