Awk 使用两个条件提取直线

Awk 使用两个条件提取直线,awk,Awk,希望有人能教我怎么做这个任务 我想awk可能会很好地做到这一点,但我真的是初学者 我有一个像下面这样的文件(标签分开,实际文件要大得多)。 这里,重要的列是第二列和第九列(文件第一行中的235和15) 我想通过指定第九列的值来提取行。此时,第二列将类似于枢轴列。我的意思是,如果第二列具有相同的值,则将数据列视为一组数据。在这组行中,所有行都需要在第九列中有特定的值 例如,如果我指定第九列为“14”和“15”。然后就要被淘汰了 S 235 1365 * 0 * * *

希望有人能教我怎么做这个任务

我想awk可能会很好地做到这一点,但我真的是初学者

我有一个像下面这样的文件(标签分开,实际文件要大得多)。 这里,重要的列是第二列和第九列(文件第一行中的235和15)

我想通过指定第九列的值来提取行。此时,第二列将类似于枢轴列。我的意思是,如果第二列具有相同的值,则将数据列视为一组数据。在这组行中,所有行都需要在第九列中有特定的值

例如,如果我指定第九列为“14”和“15”。然后就要被淘汰了

S   235 1365    *   0   *   *   *   15  1   c81 592
H   235 296 99.7    +   0   0   3I296M1066I 14  1   s15018  1
H   235 719 95.4    +   0   0   174D545M820I    15  1   c2664   10
H   235 764 99.1    +   0   0   55I764M546I 15  1   c6519   4
H   235 792 100 +   0   0   180I792M393I    14  1   c407    107

第六行和第八行的第九列中有“15”,但“集合”中的其他行(由第二列指定:236)的值不是“14”或“15”,因此我不想提取这些行

不完全确定完整的需求,看到您的预期输出,请尝试以下内容

awk '$2 == 235 && ($9 == 14 || $9 == 15)'  Input_file
输出如下

S   235 1365    *   0   *   *   *   15  1   c81 592
H   235 296 99.7    +   0   0   3I296M1066I 14  1   s15018  1
H   235 719 95.4    +   0   0   174D545M820I    15  1   c2664   10
H   235 764 99.1    +   0   0   55I764M546I 15  1   c6519   4
H   235 792 100 +   0   0   180I792M393I    14  1   c407    107
awk表达式:

awk '$2==235 && $9~/^1[45]$/' file

  • $9~/^1[45]$/
    -确保第9个字段匹配
    14
    15

嗨,Ed,我想再问一个条件。我想提取包含我在第九列指定的所有值的轴线集。在上面的示例中,我没有显示,但是,使用当前脚本,一些轴线集只有14或15条。你能教我怎么做吗?当然,用自己的输入/输出/要求示例发布一个新问题。我会在几分钟内准备一个新问题。
awk '$2==235 && $9~/^1[45]$/' file
$ cat tst.awk
$2 != prevPivot { prtCurrSet() }
$9 !~ /^1[45]$/ { isBadSet=1 }
{ currSet = currSet $0 ORS; prevPivot = $2 }
END { prtCurrSet() }
function prtCurrSet() {
    if ( !isBadSet ) {
        printf "%s", currSet
    }
    currSet = ""
    isBadSet = 0
}

$ awk -f tst.awk file
S   235 1365    *   0   *   *   *   15  1   c81 592
H   235 296 99.7    +   0   0   3I296M1066I 14  1   s15018  1
H   235 719 95.4    +   0   0   174D545M820I    15  1   c2664   10
H   235 764 99.1    +   0   0   55I764M546I 15  1   c6519   4
H   235 792 100 +   0   0   180I792M393I    14  1   c407    107