특정 문자(이 경우 쉼표) 뒤에 정확히 세 문자(텍스트 파일의 각 행에) 개행 문자를 추가하려면 어떻게 해야 합니까?

특정 문자(이 경우 쉼표) 뒤에 정확히 세 문자(텍스트 파일의 각 행에) 개행 문자를 추가하려면 어떻게 해야 합니까?

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

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

관련 정보