Мне нужно переместить (в текстовом файле) все символы от ">" до и включая "_" до конца этой строки.

Из этого:

[[[>AVA_M427014_
MAKNISRTAQMRVAIEEL

>AVB_L427D15_
MSGATSRTGNLRKEIEELVLT

>GVB_F83R906_
MAKIRANIPELLCAGVT

s004
5039.1
40403

к этому:

[[[>M427014_AVA_
MAKNISRTAQMRVAIEEL

>L427D15_AVB_
MSGATSRTGNLRKEIEELVLT

>F83R906_GVB_
MAKIRANIPELLCAGVT

s004
5039.1
40403

1 ответ1

0
sed 's/>\([^_]*_\)\(.*\)$/>\2\1/' file
#    s/                  /     / search and replace
#                                search for
#      >                         literal >
#       \(      \)\(  \)         two blocks
#         [^_]*                  anything but _, zero or more characters
#              _                 literal _
#                   .*           zero or more characters
#                       $        end of line
#                                replace with
#                         >      literal >
#                          \2\1  the second block, then the first block

Используйте sed -i для редактирования файла на месте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .