使用以下模式解析文件

时间:2012-05-28 17:32:55

标签: parsing sed awk mediawiki

我需要使用mediawiki语法(表格)解析文件。

我知道sed或awk可以做到,但我不是这些的专家。

我需要找到以下模式:

beginning_of_line| [[text]] ||  random_stuff_until_newline

管道和支架之间可能存在(或没有)空间。我需要一个输出文本

对我来说有什么解决方案吗?

Thx

3 个答案:

答案 0 :(得分:2)

解析这样的文本就像解析XML或HTML一样。正则表达式并不适合这种类型的文档。您应该尝试找到suited for the job的Python或Perl模块。

但是,这是一个sed命令,它将在您提供的简单案例中起作用。

sed 's/^[^|]*|[[:space:]]*\[\[\([^]]\+\)\]\].*/\1/' inputfile

答案 1 :(得分:1)

我会寻找一个Mediawiki解析器。它必须存在于某个地方。

如果没有这个,如果你有mediawiki的语法,你可以使用ANTLR生成一个解析器,或者根据它的语法类型生成一个解析器。

如果由于学习曲线而没有语法或者不想这样做,那么你需要一些可靠的方法来区分你所谓的“文本和你所谓的随机内容。”保证在那里的管道?如果在Java中你可以使用管道作为拆分参数来做String.split()。

这是什么意思?

答案 2 :(得分:0)

这可能适合你(GNU sed):

sed 's/^[^|]*|\s*\[\[\([^]]*\(][^]]*\)*\)]]\s*||.*/\1/;t;d' file