首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存通过ActivePerl运行的数据

保存通过ActivePerl运行的数据
EN

Stack Overflow用户
提问于 2013-07-26 14:49:50
回答 2查看 56关注 0票数 0

这一定是一个基本的问题,但我找不到令人满意的答案。这里有一个脚本,用于将CSV格式的数据转换为TSV。我以前从未使用过Perl,我需要知道如何保存在Perl脚本运行之后打印出来的数据。

脚本如下:

代码语言:javascript
复制
#!/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提示符中。如何保存这些数据?

编辑:,谢谢大家!它工作得很好!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-26 14:52:50

从cmd提示符中:

代码语言:javascript
复制
perl yourscript.pl > C:\result.txt

在这里运行perl脚本并将输出重定向到一个名为result.txt的文件

票数 1
EN

Stack Overflow用户

发布于 2013-07-26 16:22:54

将CSV文件中的所有逗号作为字段分隔符对待总是有潜在的危险。CSV文件还可以包括嵌入在数据中的逗号。下面是一个例子。

代码语言:javascript
复制
1,"Some data","Some more data"
2,"Another record","A field with, an embedded comma"

在您的代码中,行s/,/\t/g处理所有制表符相同,最后字段中嵌入的逗号也将扩展到一个选项卡。这可能不是你想要的。

下面是一些使用Text::ParseWords正确执行此操作的代码。

代码语言:javascript
复制
#!/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;
}

如果您运行这个命令,您将看到最后一个字段中的逗号没有被更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17884540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档