Применение некоторых изменений в текстовом файле с разделителями табуляции с помощью AWK - PullRequest
0 голосов
/ 03 февраля 2020

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

маленький пример:

#type   cNA NA  me  ion Dir Mism    Bulge
X   GAAGC   GAAGa   chr8    3997355     -   5   0
X   GAAGC   GAAGC   chr8    11720692    +   5   0
X   GAAGC   GAAGC   chr8    23414961    -   5   0

и я хотел бы создать новый файл, подобный этому ожидаемому выводу, в котором 1-я строка удаляется, и столбцы реорганизуются в следующем порядке:

1) columns 1 and 8 are removed.
2) 2nd column (small example file) moved to 1st column (expected output).
3) 4th column moved to the 2nd column.
4) 5th column moved to 3rd column.
5) 3rd column moved to 4th column.
6) 6th column moved to 5th column.
7) 7th column moved to 6th column.

вот ожидаемый вывод:

ожидаемый вывод:

GAAGC   chr8    3997355     GAAGa   -   5
GAAGC   chr8    11720692    GAAGC   +   5
GAAGC   chr8    23414961    GAAGC   -   5

Я пытаюсь сделать что в AWK используется следующая команда:

awk -F '\t' '{ print $2 $4 $5 $3 $6 $7}' infile.txt > output.txt

, но результаты, которые я получаю, не похожи на ожидаемый результат. ты знаешь как исправить код?

1 Ответ

2 голосов
/ 03 февраля 2020

Я не уверен, почему вы переназначаете поля? Когда мы можем просто напечатать их как:

awk 'FNR==1{next} {print $2,$4,$5,$3,$6,$7}' Input_file

ИЛИ, чтобы добавить вывод с разделением табуляцией, используйте:

awk 'BEGIN{OFS="\t"} FNR==1{next} {print $2,$4,$5,$3,$6,$7}' Input_file

ИЛИ

awk 'FNR>1{print $2,$4,$5,$3,$6,$7}' Input_file

или

awk 'BEGIN{OFS="\t"} FNR>1{print $2,$4,$5,$3,$6,$7}' Input_file


В случае, если OP желает использовать только подход к переназначению поля, можно попробовать следующее.

awk '
BEGIN{
  OFS="\t"
}
FNR==1{
  next
}
{
  $1=$2
  $2=$4
  $4=$3
  $3=$5
  $5=$6
  $6=$7
  $7=$8=""
  sub(/ +$/,"")
}
1
'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...