0

我有一个相当大的文件(在这里遇到 sed 和 awk 的问题)。我主要感兴趣的行如下:

\# Name: name [...] [...] [here=178542..178940]

或者

\# Name: name [here=reversed(10000..18899)]

从这一行我想提取这两个数字。第一个数字(x)在模式[here=or之后[here=reversed(并在 之前停止..,第二个数字(y)在模式之后开始..并以]or结束)]。提取这些数字后,我想减去 yx=z 并打印name和'z'。

对于任何提示和提示,我将非常感激!

4

2 回答 2

1

这个单行适用于您的示例行:

perl -ne '/Name: (.*?) .*\[here=.*([0-9]+)\.\.([0-9]+)/ and print "$1 ", $3-$2, "\n"'
于 2013-08-06T12:12:51.880 回答
1

这对我有用:

perl -ne '/Name: (\S*) .*\[here=\D*(\d+)\.\.(\d+)/ and print $1, ": ", $3-$2, "\n";' data.txt

使用 data.txt:

\# Name: name [...] [...] [here=178542..178940]
\# Name: name [here=reversed(10000..18899)]
于 2013-08-06T12:30:15.437 回答