需要帮助解析文件/编写脚本

时间:2010-03-31 13:13:41

标签: parsing text scripting

嘿所有,过去几年我一直在做网络开发,并没有在永远的感觉中编写任何Java或C ++。我不一定需要使用这些语言,所以我完全乐于接受建议。昨天我被一个客户端给了一个电子邮件列表,导入他们的mailchimp帐户,不幸的是,Mailchimp无法读取该文件。这是一个文本文件,但我不相信它的制表符分隔(这对我来说更容易,更容易)。

该文件的一小部分(我已更改姓氏和电子邮件地址)可在此处查看:http://sparktoignite.com/patients.txt

如果有人有关于如何将其变为Mailchimp可读格式(csv,制表符分隔的txt,excel)的建议,请告诉我。我觉得3年前我能在几分钟内做到这一点,但鉴于我在过去几年里没有触及除了RoR,PHP和jQuery以外的任何东西,我不知道在哪里开始。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您使用的是* nix,则可以使用awk

等工具
awk -F"|"  'NR>2{$1=$1}1' OFS=","  file > newfile.xls

然而,你说你知道PHP,所以为什么不坚持你知道的东西。您可以使用fgetcsv() / fputcsv()功能

$output=fopen("out.csv","w");
$handle = fopen("file", "r");
if ($handle ) {
    $line=fgetcsv($handle, 2048, "|");
    $line=fgetcsv($handle, 2048, "|");
    while (($data = fgetcsv($handle, 2048, "|")) !== FALSE) {
        $num = count($data);
        fputcsv($output,$data,',');
    }
    fclose($handle);
    fclose($output);
}

答案 1 :(得分:0)

在bash中,输出TAB分隔文件:

cat patients.txt | tr -d [[:blank:]] | tr "|" "\t" > output.txt

如果您更喜欢csv,只需将上一个"\t"更改为","

cat patients.txt | tr -d [[:blank:]] | tr "|" "\t" > output.txt

虽然它弄乱了标题。如果您需要保留标题,则需要跳过前几行:

head -n2 > output.txt
tail -n+3 | tr -d [[:blank:]] | tr "|" "\t" >> output.txt