天涼好個秋.

sed命令替换换行符

900 阅 0 评 问题&解决方案

问题

极路由云台的插件状态显示是html,所以当插件需要返回log时需要将换行符替换为<br>标记。

思路

sed读取一行时,会先把换行符去掉,处理完后再添加上,所以很难用sed本身替换掉换行符。
所以思路是用tr将换行符替换为一个特殊的符号,之后再使用sed将这一特殊的字符替换为<br>即可。

代码

tail -10 /tmp/redial.log | tr '\n' '+' | sed 's#+#<br>#g'

将log的后10行中的换行符替换为

'\n' -> '+' -> '<br>'

误区

tr '\n' '<br>'

并不会将换行符替换为<br>,只会将换行符替换为<。
tr只会替换一个字符。

思考

echo a1b2c3 | tr 'abc' '123'

这个输出什么呢?

EOF