我有一个非常大的文件(在这里遇到sed和awk的问题)。 我主要感兴趣的是:
\# Name: name [...] [...] [here=178542..178940]
或
\# Name: name [here=reversed(10000..18899)]
从这一行我想提取两个数字。第一个数字(x)位于模式[here=
或[here=reversed(
之后,在..
之前停止,第二个数字(y)在..
之后开始,以{{1结尾}或]
。
提取这些数字后,我想减去y-x = z并打印)]
和'z'。
对于任何提示和技巧,我将非常感激!
答案 0 :(得分:1)
这个单行程适用于您的示例行:
perl -ne '/Name: (.*?) .*\[here=.*([0-9]+)\.\.([0-9]+)/ and print "$1 ", $3-$2, "\n"'
答案 1 :(得分:1)
这对我有用:
perl -ne '/Name: (\S*) .*\[here=\D*(\d+)\.\.(\d+)/ and print $1, ": ", $3-$2, "\n";' data.txt
with data.txt:
\# Name: name [...] [...] [here=178542..178940]
\# Name: name [here=reversed(10000..18899)]