Интегрированный диспетчер виртуализации IBM. Эквивалент CLI

Для данного ввода, как указано, это sedвыражение, кажется, делает то, что вы просите:

$ cat input
`>TRINITY_DN75270_c3_g2::TRINITY_DN75270_c3_g2_i4::g.22702::m.22702 [sample]`
$ sed 's/^.*::\([A-Z_0-9a-z]*\)::.*\[\(.*\)\].*/\1[\2]/' input
TRINITY_DN75270_c3_g2_i4[sample]

Магия заключается в использовании групп регулярных выражений и двух обратных ссылок для восстановления желаемого результата. разъяснить:

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  ^                        the beginning of the string
 .*                       any character except \n (0 or more times
                           (matching the most amount possible))
  ::                       '::'
  \(                       group and capture to \1:
    [A-Z_0-9a-z]*            any character of: 'A' to 'Z', '_', '0'
                             to '9', 'a' to 'z' (0 or more times
                             (matching the most amount possible))
  \)                       end of \1
  ::                       '::'
 .*                       any character except \n (0 or more times
                           (matching the most amount possible))
  \[                       '['
  (                        group and capture to \2:
   .*                       any character except \n (0 or more times
                             (matching the most amount possible))
  )                        end of \2
  \]                       ']'
 .*                       any character except \n (0 or more times
                           (matching the most amount possible))

Итак, \1— это первый ключ, который вы хотели извлечь, а \2— это то, что будет в квадратных скобках после него. Затем Is реконструируется с помощью \1[\2]/, создавая желаемый результат.

1
06.08.2019, 13:11
0 ответов

Теги

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