小编use*_*638的帖子

用于轻松多行正则表达式搜索和替换的命令行工具

我使用PCRE正则表达式搜索和经常更换使用文本编辑器工作时,我被留下颇为不满后,我发现,在强大的Unix命令行工具一样perlawk或者sed它是相当复杂的使用有点先进的多正则表达式,并要求各难以记住各种情况下的语法。

是否有适用于 Linux 的命令行工具,其中使用更复杂的多行正则表达式搜索和替换(针对整个文件中的所有出现)非常简单:

magicregextool 's/.* > (.*) joined the channel\.\n(((?!.* \1 (was kicked from channel\.|was banned from channel\.)\n).*\n)+?.*\1 disconnected)/\2/' file.txt
Run Code Online (Sandbox Code Playgroud)

即要匹配的正则表达式与我search for在文本编辑器中放置在字段中的相同,替换字符串也可以处理多行正则表达式,并且不需要任何复杂的语法?

编辑:

每个请求我附加一个输入,我将使用上面的示例正则表达式并解释我想要它实际做什么。

像这样的输入:

2016-05-16 06:17:00 > foobar joined the channel.
2016-05-16 06:17:13 <foobar> hi
2016-05-16 06:18:30 > foobar was kicked from channel.
2016-05-16 06:18:30 > foobar disconnected
2016-05-16 06:20:13 > user joined the channel.
2016-05-16 06:20:38 <user> bye
2016-05-16 06:21:57 > user disconnected
Run Code Online (Sandbox Code Playgroud)

应该产生这个输出:

2016-05-16 06:17:00 > foobar joined …
Run Code Online (Sandbox Code Playgroud)

command-line software-rec regular-expression

6
推荐指数
1
解决办法
2362
查看次数