使用 sed 用“-=+ REMOVED +=-”替换正则表达式匹配和匹配前的行

Evi*_*ius 1 regex bash awk sed

我有一个大的,我的意思是超过 190 万行的大日志。我需要用正则表达式替换所有不包含“从不”和前一行的行,然后用 -=+ REMOVED +=- 替换。下面是日志中的一个例子。

2013-09-17-01:02:43 User: ID_123456@some.tld  
2013-09-17-01:02:43 Last login time: Never  
2013-09-17-01:02:43 User: ID_123458@some.tld  
2013-09-17-01:02:43 Last login time: 2013-09-16  
2013-09-17-01:02:43 User: ID_123423@some.tld  
2013-09-17-01:02:43 Last login time: 2013-09-15  
Run Code Online (Sandbox Code Playgroud)

所以用户有一个登录时间,删除该行和电子邮件地址之前的行。最终输出应该看起来像

2013-09-17-01:02:43 User: ID_123456@some.tld  
2013-09-17-01:02:43 Last login time: Never  
-=+ REMOVED +=-  
-=+ REMOVED +=-  
-=+ REMOVED +=-  
-=+ REMOVED +=-  
Run Code Online (Sandbox Code Playgroud)

应该很容易,但过去一个小时我一直在绞尽脑汁。

我更喜欢使用 sed,因为我正在尝试了解更多信息,但我对任何事情都持开放态度......

pot*_*ong 5

这可能对你有用(GNU sed):

 sed '$!N;/\n.*Never/!s/.*/-=+ REMOVED +=-/mg'  file
Run Code Online (Sandbox Code Playgroud)

  • 你能解释更多吗? (4认同)