특정 문자(이 경우 쉼표) 뒤에 정확히 3개의 문자로 구성된 개행 문자(텍스트 파일의 각 줄)를 어떻게 추가합니까?

특정 문자(이 경우 쉼표) 뒤에 정확히 3개의 문자로 구성된 개행 문자(텍스트 파일의 각 줄)를 어떻게 추가합니까?

국가, 도시, 주 정보와 기타 정보가 포함된 파일이 있습니다. 파일 내용은 다음과 같습니다. (질문과 관련된 부분만 표시됨)

Some lines (rows) of text
...
United States
Memphis, TN 38116-3252
...
More lines of text
...
United States
Austin, TX 78726
...

내가 하고 싶은 일은 우편번호 앞이나 TN 뒤에 개행 문자를 추가하고(예를 들어) ","를 개행 문자로 바꾸는 것입니다. 하지만 내 생각엔 두 번째 부분이 더 쉬울 것 같아요.

필수 형식:

Some lines (rows) of text
...
United States
Memphis
TN
38116-3252
...
More lines of text
...
United States
Austin
TX
78726
...

최종 목표는 데이터를 다음과 같은 스프레드시트로 가져오는 것입니다.

Some info | Country | State | City | Etc.
abc       | United..| Texas | Austi| zcx

나는 sed, awk 등을 사용할 수 있는 모든 것에 열려 있습니다.

답변1

나는 이것을 사용할 것입니다 sed:

sed -E 's/, /\n/;s/([A-Z]{2}) /\1\n/' States  
Some lines (rows) of text
...
United States
Memphis
TN
38116-3252
...
More lines of text
...
United States
Austin
TX
78726

첫 번째 표현식은 s/, /\n/쉼표 뒤에 공백이 오는 것을 검색하고 이를 개행 문자로 바꿉니다.

두 번째 표현식은 s/([A-Z]{2}) /\1\n/공백이 뒤따르는 두 개의 대문자를 검색하여 개행 문자로 바꿉니다.


sed --version
sed (GNU sed) 4.2.2

관련 정보