SED如何根据一行的属性,删除上一行的回车?

loujihou 2018-08-01 07:13:42

我有一个日志信息,如图所示,问题如下:
我现在想要写一个SED通过LOOP循环,如果该行的开头不是20,那么我就把上一行的回车去掉变成' | '。合并改行。
注意:不能以com开头为准,因为可能不止会出现com,所以要以20开头为准!

想了很久,网上也看到loop循环方法,但是sed小白,写点简单的自己还能应付,这么复杂的,头都炸了,求大牛支持!
...全文
457 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
李庆海 2018-08-03
  • 打赏
  • 举报
回复
引用 4 楼 loujihou 的回复:
[quote=引用 2 楼 Liqinghai058 的回复:]
你好,这个其实不是问题,因为日志输出的内容比较多,它本来就是一行信息只不过屏幕显示不够宽所以才换行,其实你可以用ssh终端做测试,假如现在是输出3行,你把字体调小几号,它就会变为1行半或2行内容

不行的,这个就是回车\n,不是显示的问题![/quote]
-------------------------------------
你好,如果确定不是回车\n,这种最好的解决方案就是项目中日志配置不换行输出
李庆海 2018-08-02
  • 打赏
  • 举报
回复
你好,这个其实不是问题,因为日志输出的内容比较多,它本来就是一行信息只不过屏幕显示不够宽所以才换行,其实你可以用ssh终端做测试,假如现在是输出3行,你把字体调小几号,它就会变为1行半或2行内容
loujihou 2018-08-02
  • 打赏
  • 举报
回复
@代码誉写工
loujihou 2018-08-02
  • 打赏
  • 举报
回复
引用 3 楼 aningsk 的回复:
不知道怎么能用sed完成这个操作,但觉得用C语言似乎简单些:
判断读到的是不是‘\n’,如果是,判断接下来是不是"20",如果不是,将\n替换为“|”;循环以上操作,直到文件结束。


目前我们想流处理,所以想用这种方法!
loujihou 2018-08-02
  • 打赏
  • 举报
回复
引用 2 楼 Liqinghai058 的回复:
你好,这个其实不是问题,因为日志输出的内容比较多,它本来就是一行信息只不过屏幕显示不够宽所以才换行,其实你可以用ssh终端做测试,假如现在是输出3行,你把字体调小几号,它就会变为1行半或2行内容

不行的,这个就是回车\n,不是显示的问题!
枫叶雪 2018-08-02
  • 打赏
  • 举报
回复
不知道怎么能用sed完成这个操作,但觉得用C语言似乎简单些:
判断读到的是不是‘\n’,如果是,判断接下来是不是"20",如果不是,将\n替换为“|”;循环以上操作,直到文件结束。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧