从分隔文件中删除列

时间:2012-10-17 15:31:52

标签: perl unix

我正在尝试剪切并粘贴制表符分隔文件,并以这种方式使用unix中的剪切和粘贴实用程序:

cut -f 1-66 file1 > file1a
cut -f 68- file1  > file1b
paste file1a file1b

但是我想知道是否有办法使用-F命令在Perl / Ruby中执行它,因为从长远来看这可能会更快。例如

perl -F/\\t/ -ane
for every line in document
  for i (0..66) and (67..Last field in line)
    print $[i]
   end
   print \n
end

2 个答案:

答案 0 :(得分:4)

您的原始代码似乎缺少某些重定向。

怎么样:

cut -f1-66,68- input > output

我认为perl或ruby不太可能比这更快。

答案 1 :(得分:4)

Perl可以这样工作:

perl -F/\\t/ -ane  'print join("\t", @F[0..66,68..$#F])'

@F包含字符串的一部分,$#F包含@F中最后一个元素的索引