У меня есть данные, что выглядит следующим образом:AWK Если/ElseConditional Проблема
foo foo scaffold_7 1 4845 6422 4845
bar bar scaffold_7 -1 14689 16310 16310
То, что я хочу сделать, это обрабатывать эти строки где я просто хочу, чтобы напечатать колонку 1,2,3, 7 и еще один столбец после 7-го. Но с условием при печати колонки 7 и далее.
Ниже мой AWK сценария:
awk '{
if ($4=="+") { {end=$6-$5}{print $1 "\t" $2 "\t" $3 "\t" $4 "\t" $7 "\t" end+$7} }
else
{end=$6-$5}{print $1 "\t" $2 "\t" $3 "\t" $4 "\t" $7-end "\t" $7}
}'
Но почему он не достичь желаемого результата, как это?
foo foo scaffold_7 1 4845 6422
bar bar scaffold_7 -1 14689 16310
Обратите внимание, что арифметический (например $7-end
или end+$7
) является обязательным. Поэтому мы не можем просто поменять столбец из входного файла. Кроме того, этот AWK будет находиться в сценарии bash.
Neater, короче, легче изменить: 'awk -vOFS = '\ t' '{... print $ 1, $ 2 ...' –