Вы можете сделать это с помощью Perl
следующим образом.
Команда -строка:
$ perl -F, -pale '$_ = $F[1] // $_' out.txt
Пояснение:
-p
будет читать строки записей -по строке -И автоматически печатать перед тем, как перейти к чтению следующего или eof. -l
делаетIRS = ORS = "\n"
-F,
делает FS
запятой. -a
разбивает каждую запись $_
по разделителю полей, в нашем случае запятой, и продолжает и сохраняет сгенерированные таким образом поля в массиве @F
, который имеет нулевой -индекс. -e
подразумевает, что за ним следует код Perl
, который должен применяться к каждой записи. $_ = $F[1] // $_
читается следующим образом :если второе поле $F[1]
не определено, используйте текущую запись $_
. А затем результат этого выражения присваивается текущей записи $_
. -p
в perl
, перед считыванием новой записи текущая запись берется в stdout
. Результат:
NA
NA
NA
NA
NA
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85753
gene85752
gene85752
Вы также можете сделать это с помощью версии GNU редактора sed
, как показано ниже:
$ sed -ne '
s/,/\n/
s/.*\n//
s/,/\n/
P
' out.txt