这一定是一个基本的问题,但我找不到令人满意的答案。这里有一个脚本,用于将CSV格式的数据转换为TSV。我以前从未使用过Perl,我需要知道如何保存在Perl脚本运行之后打印出来的数据。
脚本如下:
#!/usr/bin/perl
use warnings;
use strict;
my $filename = data.csv;
open FILE, $filename or die "can't open $filename: $!";
while (<FILE>) {
s/"//g;
s/,/\t/g;
s/Begin\.Time\.\.s\./Begin Time (s)/;
s/End\.Time\.\.s\./End Time (s)/;
s/Low\.Freq\.\.Hz\./Low Freq (Hz)/;
s/High\.Freq\.\.Hz\./High Freq (Hz)/;
s/Begin\.File/Begin File/;
s/File\.Offset\.\.s\./File Offset (s)/;
s/Random.Number/Random Number/;
s/Random.Percent/Random Percent/;
print;
}所有分析过的数据都在cmd提示符中。如何保存这些数据?
编辑:,谢谢大家!它工作得很好!
发布于 2013-07-26 14:52:50
从cmd提示符中:
perl yourscript.pl > C:\result.txt在这里运行perl脚本并将输出重定向到一个名为result.txt的文件
发布于 2013-07-26 16:22:54
将CSV文件中的所有逗号作为字段分隔符对待总是有潜在的危险。CSV文件还可以包括嵌入在数据中的逗号。下面是一个例子。
1,"Some data","Some more data"
2,"Another record","A field with, an embedded comma"在您的代码中,行s/,/\t/g处理所有制表符相同,最后字段中嵌入的逗号也将扩展到一个选项卡。这可能不是你想要的。
下面是一些使用Text::ParseWords正确执行此操作的代码。
#!/usr/bin/perl
use strict;
use warnings;
use Text::ParseWords;
while (<>) {
my @line = parse_line(',', 0, $_);
$_ = join "\t", @line;
# All your s/.../.../ lines here
print;
}如果您运行这个命令,您将看到最后一个字段中的逗号没有被更新。
https://stackoverflow.com/questions/17884540
复制相似问题