我是Perl的新手,我正尝试删除在特定位置定义的列。我的文件如下:
https://i.stack.imgur.com/18l5a.png
知道这些列的编号如下:
1-3 , 5-7 , 9-12 , 14-16 , 18-21 , 23-25 , 27-29 , 31-37 , 39-68 , 70-72 , 74
我想删除以以下位置开头的列:
1-3 , 14-16 , 23-25 , 27-29 , 31-37 , 39-68 , 70-72 , 74
为了使我能够理解这一点,仅将列:5-7和9-12更改为:1-5和7-10
我还想在特定位置添加新列,例如(12-21),并获得以下结果文件:
https://i.stack.imgur.com/eQ0Yp.png。
提前谢谢!
答案 0 :(得分:0)
一种方法是使用unpack
。试试这个perl p.pl < in.txt
,其中p.pl
是:
while (<>) {
my @cols = unpack "A3xA3xA4xA*", $_;
CORE::say join ' ', $cols[2] . ' ', $cols[1], " same";
}
更新:
根据评论中的讨论,以下解决方案解决了该问题:
while (<>) {
my @cols = unpack "A3xA3xA4xA*", $_;
printf "%-5s %-5s %-4s\n", $cols[1], $cols[2], "same";
}