将csv转换为文本

时间:2010-06-14 23:44:18

标签: bash

我有一个ip地址的csv(大)文件,并希望在bash中转换为单行ip地址。

aa.bb.cc.dd,aa.bb.cc.dd,aa.bb.cc.dd,..


aa.bb.cc.dd
aa.bb.cc.dd
aa.bb.cc.dd
[..]

有问题的ips列表,

http://www.stopforumspam.com/downloads/bannedips.zip

4 个答案:

答案 0 :(得分:12)

cat file | tr  ',' '\n' > fixed.txt

tr进行简单的字符翻译(还有更多,但这就是它在这里所做的)。这只是将所有逗号转换为换行符。

答案 1 :(得分:5)

tr ',' '\n' < inputfile > outputfile

对于从左到右的狗人:

< inputfile tr ',' '\n' > outputfile

答案 2 :(得分:2)

在bash中你可以使用while循环:

while read -d, ip; 
    do echo $ip; 
done <file.csv >output

在awk中,您可以用更少的时间获得相同的结果:

awk -v RS=, '$1' file.csv >output

答案 3 :(得分:1)

假设您的服务器上没有该文件,这将在一行中为您完成所有工作:

curl http://www.stopforumspam.com/downloads/bannedips.zip | gunzip -c | sed s/,/\\n/g  > bannedips.txt

You can't use unzip for this,如果你想让它飞过水管。

感谢Dennis的建议!