Почему регулярное выражение не соответствует вводу команды sed

Используя GNU sedдля простоты написания кода, мы можем сделать это следующим образом:

sed -Ee '
   $!N
   s|^(\S+\t\S+\t)(\S+)(\t\S+\t\S+\t\S+)(\n)\1(\S+)\3$|\4\1\2/\5\3|
   /^\n/!P;D
' yourfile

Результаты

1       109860777       COSN18724706    CT      C       SORT1
1       154842199       COSM3685920/COSM5827506 G       GGCTGCTGCTGCTGCT,GGCTGCTGCTGCTGCTGCT    KCNN3
1       1684347 COSM1320773/COSM1320774/COSM5827581     C       CCCT    NADK
1       248801602       COSM246232      T       TCA     OR2T35

Работа

  • Вызовите GNU sedс опцией -E, чтобы активировать расширенные RE.
  • Загрузить следующую строку в шаблоне, если это не конец.
  • Мы предположили, что между полями не было начальных/конечных TAB, а также множественных TAB.
  • Клуб $1 $2 в \1, $3 в \2, $4, $5, $6 в \3.
  • Затем попробуйте сделать переходник, как показано на рисунке. В случае успеха мы бы переместили 3 доллара следующей строки в 3 доллара текущей, разделив их косой чертой И новой строкой в ​​BOL.
  • Затем мы печатаем текущую строку при сбое подпрограммы, OTW, мы повторяем код sed с тем, что у нас есть в пространстве шаблонов.
0
18.12.2017, 15:15
0 ответов

Теги

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