Как убрать все в первом столбце только после точки? - PullRequest
2 голосов
/ 15 января 2020

У меня есть несколько файлов, подобных этому:

head Stomach.v7.egenes.txt
ENSG00000238009.2 RP11-34P13.7  1  89295 129223  - 2073 1.03557 343.245
ENSG00000237683.5   AL627309.1  1 134901 139379  - 2123 1.02105 359.907
ENSG00000235146.2 RP5-857K21.2  1 523009 530148  + 4098 1.03503 592.973
ENSG00000231709.1 RP5-857K21.1  1 521369 523833  - 4101 1.07053 559.642
ENSG00000223659.1 RP5-857K21.5  1 562757 564390  - 4236 1.05527 595.015
ENSG00000237973.1 hsa-mir-6723  1 566454 567996  + 4247 1.05299 592.876

как мне удалить все после первой точки в первом столбце в каждом файле? чтобы получить для этого примера это:

ENSG00000238009 RP11-34P13.7  1  89295 129223  - 2073 1.03557 343.245
ENSG00000237683   AL627309.1  1 134901 139379  - 2123 1.02105 359.907
ENSG00000235146 RP5-857K21.2  1 523009 530148  + 4098 1.03503 592.973
ENSG00000231709 RP5-857K21.1  1 521369 523833  - 4101 1.07053 559.642
ENSG00000223659 RP5-857K21.5  1 562757 564390  - 4236 1.05527 595.015
ENSG00000237973 hsa-mir-6723  1 566454 567996  + 4247 1.05299 592.876

Я пытался сделать это:

awk 'BEGIN{FS=OFS=" "} {gsub(/\./, " ", $1)} 1' Stomach.v7.egenes.txt > test.txt

, но это не дает мне вывод выше.

Ответы [ 2 ]

1 голос
/ 15 января 2020

как мне удалить все после первой точки в первом столбце

Это на самом деле просто, используя awk:

awk '{sub(/\..*$/, "", $1)} 1' file

ENSG00000238009 RP11-34P13.7 1 89295 129223 - 2073 1.03557 343.245
ENSG00000237683 AL627309.1 1 134901 139379 - 2123 1.02105 359.907
ENSG00000235146 RP5-857K21.2 1 523009 530148 + 4098 1.03503 592.973
ENSG00000231709 RP5-857K21.1 1 521369 523833 - 4101 1.07053 559.642
ENSG00000223659 RP5-857K21.5 1 562757 564390 - 4236 1.05527 595.015
ENSG00000237973 hsa-mir-6723 1 566454 567996 + 4247 1.05299 592.876

Если вы используете gnu awk, вы можете использовать редактирование файлов на месте и избежать l oop:

awk -i inplace '{sub(/\..*$/, "", $1)} 1' *.v7.egenes.txt
0 голосов
/ 15 января 2020

Другой вариант с sed:

$ cat data
ENSG00000238009.2 RP11-34P13.7  1  89295 129223  - 2073 1.03557 343.245
ENSG00000237683.5   AL627309.1  1 134901 139379  - 2123 1.02105 359.907

$ cat data | sed -E 's/(^.?{15})\.[0-9]/\1/'
ENSG00000238009 RP11-34P13.7  1  89295 129223  - 2073 1.03557 343.245
ENSG00000237683   AL627309.1  1 134901 139379  - 2123 1.02105 359.907
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...