awk将同一行中的两个元素与正则表达式进行比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk将同一行中的两个元素与正则表达式进行比较相关的知识,希望对你有一定的参考价值。
我的文件很长,我必须比较同一行中存在的两个染色体编号。我想使用awk创建一个仅采用染色体编号不同的行的文件。
这是我的文件的示例:
CHROM ALT
1 ]1:1234567]T
1 T[1:2345678[
1 A[12:3456789[
2 etc...
在此示例中,我希望比较染色体的编号(在CHROM列中为'1')和第一个方括号([或])与“:”符号之间的编号。如果这些数字不同,我希望打印相应的行。
这里,结果应该像这样:
1 A[12:3456789[
谢谢您的帮助。
答案
$ awk -F'[][]' '$1+0 != $2+0' file
1 A[12:3456789[
2 etc...
另一答案
这需要3个参数match()
函数的GNU awk:
gawk 'match($2, /[][]([0-9]+):/, a) && $1 != a[1]' file
另一答案
再次感谢您提供不同的答案。
下面是几列的数据:
CHROM POS ID REF ALT
1 1000000 123:1 A ]1:1234567]T
1 2000000 456:1 A T[1:2345678[
1 3000000 789:1 T A[12:3456789[
2 ... ... . ...
我的问题是:当我有几列时,如何修改前面的代码?
另一答案
awk '/....1...A.12:/{print $0}' file
1 A[12:3456789[
以上是关于awk将同一行中的两个元素与正则表达式进行比较的主要内容,如果未能解决你的问题,请参考以下文章