как объяснить команду awk с двойной трубкой? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть такой файл:

head CHR.17.dat
PANEL   FILE    ID  CHR P0  P1  HSQ BEST.GWAS.ID    BEST.GWAS.Z EQTL.ID EQTL.R2 EQTL.Z  EQTL.GWAS.Z NSNP    NWGT    MODEL   MODELCV.R2  MODELCV.PV  TWAS.Z  TWAS.P
NA  ./weight//retina/retina.ENSG00000002834.wgt.RDat    LASP1   17  38869859    38921770    0.082133    NA     NA   NA         NA       NA        NA      0   0 enet     4.53e-02   9.26e-06          NA         NA
NA  ./weight//retina/retina.ENSG00000002919.wgt.RDat    SNX11   17  48103357    48123074    0.014947    NA     NA   NA         NA       NA        NA      0   0 lasso   -1.91e-03   6.32e-01          NA         NA
NA  ./weight//retina/retina.ENSG00000004139.wgt.RDat    SARM1   17  28364356    28404049    0.095283    rs8076604    2.52   rs1128162   -1.96e-0 -3.31   0.67843     94  94 blup     2.19e-02   1.66e-03     0.64027    0.52200

...

не могли бы вы объяснить, что эта команда должна делать:

cat CHR.17.dat | awk 'NR == 1 || $NF < 0.05/461'

1 Ответ

1 голос
/ 07 мая 2020

Как и во многих языках, в awk || означает or. Эта команда будет производить вывод, если текущая строка ввода является первой (NR == 1) или (||), значение последнего поля ввода ($NF) в текущей строке меньше заданного значения ($NF < 0.05/461).

Итак, он печатает строку заголовка и любые другие строки, для которых выполняется 2-е условие.

Это включает UUO C хотя:

cat CHR.17.dat | awk 'NR == 1 || $NF < 0.05/461'

и вместо этого следует писать:

awk 'NR == 1 || $NF < 0.05/461' CHR.17.dat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...