我只是Perl的初学者,在使用Perl脚本过滤列时需要一些帮助.我在文件中有大约10个以逗号分隔的列,我需要在该文件中保留5列并从该文件中删除所有其他列.我们如何实现这一目标?
非常感谢任何人的帮助.
欢呼,尼尔
看看Text :: CSV(或Text :: CSV_XS)来解析Perl中的CSV文件.它可以在CPAN上使用,或者你可以通过你的包管理器获得它,如果你使用的是Linux或其他类Unix操作系统.在Ubuntu中,该包称为libtext-csv-perl.
它可以处理引用的字段之类的情况,因为它们包含逗号,这是简单的拆分命令无法处理的.
CSV是一种定义不明确的复杂格式(引号,逗号和空格的奇怪问题).寻找一个可以为您处理细微差别的库,并为您提供方便,例如按列名称进行索引.
当然,如果您只是想用逗号分割文本文件,那么请查看@ Pax的解决方案.
使用split将线拉开然后输出您想要的线(比如每隔一列),创建以下xx.pl文件:
while() { chomp; @fields = split (",",$_); print "$fields[1],$fields[3],$fields[5],$fields[7],$fields[9]\n" }
然后执行:
$ echo 1,2,3,4,5,6,7,8,9,10 | perl xx.pl 2,4,6,8,10