Как разделить один столбец на два по определенному символу?

$ awk '{ print $0, "("$2"-"$8") + ("$4"-"$10")"}' inputfile
X 2.63766751981802 Y 1.68326762144808 Z 0 XX 2.63577810877244 YY 1.67475013544567 ZZ 0 (2.63766751981802-2.63577810877244) + (1.68326762144808-1.67475013544567)
1
03.02.2020, 15:54
3 ответа

Если ваши данные разделены табуляцией -, замените двоеточие на табуляцию:

tr : $'\t' < file

Использует bash ANSI -C Quoting

1
28.04.2021, 23:24

Использование Миллера(https://github.com/johnkerl/miller)и запуск

mlr --tsv nest --explode --values --across-fields --nested-fs ":" -f "Chromosome Position" \
then rename "Chromosome Position_1",Chromosome,"Chromosome Position_2",Position input.tsv >output.tsv

у вас будет

+------+--------+------------+-----------+
| Gene | qval   | Chromosome | Position  |
+------+--------+------------+-----------+
| ACE  | 0.3748 | 1          | 234689650 |
| NOS  | 0.2    | 2          | 374896578 |
| BRCA | 0.345  | 12         | 897655323 |
+------+--------+------------+-----------+
2
28.04.2021, 23:24

Что не так с вашим первым подходом (за исключением того, что вы заменили двоеточие пробелом вместо<TAB>)? Попробуйте адаптацию:

awk '{sub (/:/, OFS)} 1' OFS="\t" file
1
28.04.2021, 23:24

Теги

Похожие вопросы