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,因为我正在尝试了解更多信息,但我对任何事情都持开放态度......
这可能对你有用(GNU sed):
sed '$!N;/\n.*Never/!s/.*/-=+ REMOVED +=-/mg' file
Run Code Online (Sandbox Code Playgroud)