我想将第一个字符串>
和第一个字符串之间的第一个字符串移动_
到第一个字符串之后的第二个位置_
这是为了改变这个:
>10E13JB10_Vacares_8__a1
blablabla
>10E13JB10_Vacares_8__a2
blablabla
>10E2JB10_Mulhacen_13__a1
blablabla
进入这个:
>Vacares_10E13JB10_8__a1
blablabla
>Vacares_10E13JB10_8__a2
blablabla
>Mulhacen_10E2JB10_13__a1
blablabla
答案1
sed -e 's/^>\([^_]*\)_\([^_]*\)/>\2_\1/' -i file
找到以 结尾的前两个字符串_
,并在替换中反转它们的顺序。由于它只匹配前两个字符串,因此它不会修改或丢弃该行的其余部分。
s/aaa/bbb/
- 执行替换,将所有出现的 替换aaa
为bbb
^
- 行首\(...\)
-捕获组,将匹配的字符串保存为\1
and\2
[^_]*
- A字符类匹配除以下字符外的所有字符_