搜索两个字符之间的字符串
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
我需要从如下所示的行中找到两个数字
>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