![여러 필드가 있는 행에서 각 필드에 대해 새 행을 만들고 이전 행에서 필드를 제거합니다.](https://linux55.com/image/156860/%EC%97%AC%EB%9F%AC%20%ED%95%84%EB%93%9C%EA%B0%80%20%EC%9E%88%EB%8A%94%20%ED%96%89%EC%97%90%EC%84%9C%20%EA%B0%81%20%ED%95%84%EB%93%9C%EC%97%90%20%EB%8C%80%ED%95%B4%20%EC%83%88%20%ED%96%89%EC%9D%84%20%EB%A7%8C%EB%93%A4%EA%B3%A0%20%EC%9D%B4%EC%A0%84%20%ED%96%89%EC%97%90%EC%84%9C%20%ED%95%84%EB%93%9C%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%ED%95%A9%EB%8B%88%EB%8B%A4..png)
다음과 같은 파일이 있습니다.
elephant
kangaroo, snake, zebra
baboon
parrot, eagle, owl
...
...
각 행에 하나의 요소만 있도록 이 목록을 변경하고 싶습니다.
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl
...
...
awk에서 이 작업을 수행할 수 있는 방법이 있나요?
감사해요
답변1
이는 다양한 도구를 사용하여 쉽게 수행할 수 있습니다. 귀하 의 입력에 따라 모든 ,
것을 \n
.tr
$ tr ',' '\n' < file
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl
이로 인해 추가 공간이 남지만.
awk
(GNU ) 에서는 awk
다음과 같이 할 수 있습니다:
$ awk '{gsub(", ","\n");}1' file
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl
GNU에서 sed
:
$ sed 's/, /\n/g' file
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl
펄에서는:
$ perl -pe 's/, /\n/g' file
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl
답변2
awk
해결책을 찾는 데 관심이 있으십니까 ? sed
예를 들어 다음과 같이 하면 쉽습니다.
$ cat foo
elephant
kangaroo, snake, zebra
baboon
parrot, eagle, owl
$ sed -e 's/, */\
/g' < foo
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl
답변3
Python을 사용하여 완료:
#!/usr/bin/python
import re
k=open('p.txt','r')
for i in k:
print re.sub(",","\n",i).strip().replace(" ","")
산출
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl