Расширенное перенаправление файловых дескрипторов, как работать с несколькими файловыми дескрипторами одновременно

Вы можете сделать это с помощью 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
0
04.02.2020, 22:27
0 ответов

Теги

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