我有一个如下所示的文件:
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 中:
$ 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