기호로 구분된 임의 길이의 두 문자열을 바꿉니다.

기호로 구분된 임의 길이의 두 문자열을 바꿉니다.

공백으로 구분된 여러 단어로 구성된 파일 이름을 "-" 기호의 첫 번째 항목을 검색한 다음 해당 문자열의 순서를 전환하여 두 개의 개별 문자열로 분할하려고 합니다. 예를 들어, 파일 이름이 원래

워드 1 워드 2 ... 워드 9 - 워드 A 워드 B ... 워드 Z

그러면 원하는 출력은 다음과 같습니다.

워드 A 워드 B ... 워드 Z - 워드 1 워드 2 ... 워드 9

"-"는 양쪽에 최대 1개의 단어를 포함할 수 있습니다. 내 sed 코드는

sed -r 's/([a-zA-Z0-9]+) \- ([a-zA-Z0-9])*/\2 \- \1/'

내 질문은 sed에서 "-" 앞뒤에 단어 수를 지정하는 방법입니다. sed는 최대 9개 모드만 지원하는 것으로 알고 있습니다.

나는 읽었다과거로부터의 질문그러나 문제는 알려진 고정된 수의 단어를 전환하는 것에 관한 것입니다.

답변1

이 시도:

echo 'word1 word 2 ... word9 - wordA wordB ... wordZ' | sed 's/\(.*\) - \(.*\)/\2 - \1/'

산출:

워드 A 워드 B ... 워드 Z - 워드 1 워드 2 ... 워드 9

관련 정보