R 对大型文本文件执行编辑序列
我希望对一个几乎完全由单个字母组成的大文本文件进行一系列编辑,并用空格分隔。该文件大约有300行乘400000列,大约有250MB 我的目标是使用一系列步骤转换此表,以便最终使用另一种语言(可能是R)进行处理。我在处理大数据文件方面没有太多经验,但有人向我建议PERL是最好的方法。如果有更好的方法,请告诉我:) 因此,我希望编写一个PERL脚本,它可以执行以下操作:R 对大型文本文件执行编辑序列,r,perl,sed,awk,R,Perl,Sed,Awk,我希望对一个几乎完全由单个字母组成的大文本文件进行一系列编辑,并用空格分隔。该文件大约有300行乘400000列,大约有250MB 我的目标是使用一系列步骤转换此表,以便最终使用另一种语言(可能是R)进行处理。我在处理大数据文件方面没有太多经验,但有人向我建议PERL是最好的方法。如果有更好的方法,请告诉我:) 因此,我希望编写一个PERL脚本,它可以执行以下操作: 按以下步骤打开文件、编辑或写入新文件: 移除第2-6列 合并/连接列对,从列2开始(因此,合并列2-3、4-5等) 根据在每行上运
[example PSEUDOCODE: if character 1 of cell = character 2 of cell=a, cell=1
else if character 1 of cell = character 2 of cell=b, cell=2
etc.] such that except for the first column, the table is a numerical matrix
use strict;
use warnings;
my @transformed;
while (<>) {
chomp;
my @cols = split(/\s/); # split on whitespace
splice(@cols, 1,6); # remove columns
push @transformed, $cols[0];
for (my $i = 1; $i < @cols; $i += 2) {
push @transformed, "$cols[$i]$cols[$i+1]";
}
# other transforms as required
print join(' ', @transformed), "\n";
}
使用严格;
使用警告;
我的灵魂改变了;
而(){
咀嚼;
my@cols=split(/\s/);#在空格上拆分
拼接(@cols,1,6)#移除柱
推送@transformed,$cols[0];
对于(我的$i=1;$i<@cols;$i+=2){
推送@transformed,“$cols[$i]$cols[$i+1]”;
}
#根据需要进行其他转换
打印联接(“”,@transformed),“\n”;
}
这应该会让您上路。您需要发布一些示例输入和预期输出,或者我们只是猜测您想要什么,但这可能是一个开始:
awk '{
printf "%s ", $1
for (i=7;i<=NF;i+=2) {
printf "%s%s ", $i, $(i+1)
}
print ""
}' file
awk'{
printf“%s”,1美元
对于(i=7;iNote:ia),循环增量为$i+=1。它应该是$i+=2,所以我编辑了答案。