搜索两个字符之间的字符串

Searching for a string between two characters

我需要从如下所示的行中找到两个数字

>Chr14:453901-458800

我有大量这些行与不包含“:”的行混合在一起,因此我们可以搜索冒号以找到带有数字的行。每行都有不同的数字。

我需要找到 ":" 之后由 "-" 分隔的两个数字,然后从第二个数字中减去第一个数字并在屏幕上打印每一行的结果

我希望使用 awk 完成此操作

我设法做了这样的事情:

awk -e ' ~ /\:/ {print [=11=]}' file.txt

但离最终结果还很远

对于这个例子,我上面显示的结果是:

4899

因为它是458800 - 453901 = 4899

的结果

我无法自己解决,希望得到一些帮助

使用 GNU awk。使用 :- 分隔符将行分成多列。在包含 : 的每一行中,从第 3 列的内容中减去第 2 列的内容并打印结果。

awk -F '[:-]' '/:/{print -}' file

输出:

4899

使用awk

$ awk -F: '/:/ {split(,a,"-"); print a[2] - a[1]}' input_file
4899