줄의 문자열 위치 변경

줄의 문자열 위치 변경

첫 번째 문자열 과 첫 번째 문자열 >사이의 첫 번째 문자열을 _첫 번째 문자열 뒤의 두 번째 위치로 이동하고 싶습니다._

이를 변경하는 방법은 다음과 같습니다.

>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.\2
  • [^_]*-ㅏ캐릭터 클래스다음을 제외한 모든 문자와 일치합니다._

관련 정보