我需要帮助删除两个空行之前的文本。
任何人都可以帮助使用 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/