Awk를 사용하여 텍스트의 단어 바이그램 식별 및 역방향

Awk를 사용하여 텍스트의 단어 바이그램 식별 및 역방향

저는 애니메이션을 좋아해서 주로 자막이 있는 애니메이션을 시청합니다. 때때로 하류층 사람들은 서양인처럼 이름을 성 앞에 놓는 방식으로 이름을 정렬합니다. 정말 마음에 들지 않지만 이름 순서를 바꾸려고 자막 파일을 수동으로 탐색하는 것은 시간 낭비입니다. 나는 Awk(또는 Awk가 올바른 선택이 아닌 경우 다른 표준 Linux 유틸리티)를 사용하여 텍스트에서 대문자로 시작하고 항상 함께 나타나는 단어(튜플)를 검색하고 순서를 바꾸고 싶습니다. 공백과 기호는 단어 구분 기호여야 합니다. 이는 오탐(false positive)이 발생하지 않을 만큼 충분해야 합니다.

예를 들어 의 모든 인스턴스 Miu Matsuoka는 로 변환되어야 합니다 Matsuoka Miu.

답변1

이 시도,

sed -r -e "s:([A-Z][a-z]+)\s([A-Z][a-z]+):\2 \1:g" subfile > newsubfile

또는 원본 파일을 다음으로 변경할 수 있습니다.

sed -i -r -e "s:([A-Z][a-z]+)\s([A-Z][a-z]+):\2 \1:g" subfile

정규 표현식은 ([A-Z][a-z]+)\s([A-Z][a-z]+)대문자로 시작하는 연속된 두 단어를 선택하고 sed그 순서를 반대로 합니다. 이것이 모든 테스트 사례와 일치하는지 확인하세요. 몇 가지 테스트를 했는데 효과가 있었습니다.

관련 정보