gpt4 book ai didi

linux - sed - 删除两个空行之前的文本

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:55 24 4
gpt4 key购买 nike

我需要帮助删除两个空行之前的文本。

任何人都可以帮助使用 SED 做到这一点吗?

示例:(我的日志文件)行:“%%%% 信息 | 日期:...”

来源:

%%%% Info | Date: (11-02-18)-Day=042 - %%%%

OLD: android-902 (11-02-18 02:30)

Wi-Fi up - USB (11-02-18 03:21:21)

%%%% - Info | Date: (12-02-18)-Day=043 - %%%%

Wi-Fi up - USB (12-02-18 07:17:02)

Smart Connected (12-02-18 10:19)

%%%% - Info | Date: (13-02-18)-Day=044 - %%%%


%%%% - Info | Date: (14-02-18)-Day=045 - %%%%


%%%% - Info | Date: (15-02-18)-Day=046 - %%%%


%%%% - Info | Date: (16-02-18)-Day=047 - %%%%

Wi-Fi up - USB (16-02-18 06:32:24)

输出:

%%%% Info | Date: (11-02-18)-Day=042 - %%%%

OLD: android-902 (07-02-18 02:30)

Wi-Fi up - USB (07-02-18 03:21:21)

%%%% - Info | Date: (12-02-18)-Day=043 - %%%%

Wi-Fi up - USB (12-02-18 07:17:02)

Smart Connected (12-02-18 10:19)

%%%% - Info | Date: (16-02-18)-Day=047 - %%%%

Wi-Fi up - USB (16-02-18 06:32:24)

提前致谢。

最佳答案

sed 是一个非常强大的工具,但它并不是用于多行处理的最佳工具,只需使用以下 awk 解决方案来完成您的任务。

$ awk 'BEGIN{RS="%%%%[^%]+%%%%\n\n\n"}{printf "%s",$0}' input.log
%%%% Info | Date: (11-02-18)-Day=042 - %%%%

OLD: android-902 (11-02-18 02:30)

Wi-Fi up - USB (11-02-18 03:21:21)

%%%% - Info | Date: (12-02-18)-Day=043 - %%%%

Wi-Fi up - USB (12-02-18 07:17:02)

Smart Connected (12-02-18 10:19)

%%%% - Info | Date: (16-02-18)-Day=047 - %%%%

Wi-Fi up - USB (16-02-18 06:32:24)

说明:

RS="%%%%[^%]+%%%%\n\n\n" 是记录分隔符,awk 将使用它来查找每条记录,当您使用默认的 ORS 时,这些字段将从输出中删除并替换为 \n

关于linux - sed - 删除两个空行之前的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com