2015-02-10 3 views
1

Мне нужно вычесть столбец два из трех. Итак, я запустил следующий код на Linux-сервере awk '$3 - $2' in.bed >out.bed, сгенерированный выходной файл был идентичен входному файлу. Я не понимаю, почему эта команда не работает! Может ли кто-нибудь помочь?Вычитание двух числовых столбцов

in.bed был:

chr19 2255482 2259550 
chr19 2270962 2272924 
chr19 2326618 2327833 
chr19 2329714 2333233 

ответ

4

, как вы выразились, $3 - $2 обрабатывается как условие: Эти строки, где $3 - $2 не равен нулю, выбирают и распечатаны (поскольку печать линии без изменений по умолчанию действие).

Вы можете делать то, что вы хотите, как это:

awk '{ print $3 - $2 }' in.bed > out.bed 

{} означает, что то, что заключено в них действие, а потому нет прилагается состояние, { print $3 - $2 } выполняется безусловно для всех линий.

+0

в двух словах, прежде чем я собирался ответить: Dl ... + 1 – repzero

+0

Большое спасибо @Wintermute. Он работал и был потрясающим. –

+0

@RashedulIslam star this answer, если это то, что вы ищете – repzero

Смежные вопросы