perl - 使用perl删除特定位置的列
问题描述
我是 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。
先感谢您!
解决方案
一种方法是使用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";
}
推荐阅读
- python - ActionChains 不会在 Chrome webdriver 实现中调用 reset_actions() 上的 keyUp 事件
- python - torchvision 导入上的未定义符号
- java - 编译时类型未知的 Java 类属性
- amazon-web-services - 如何在 S3 中允许对现有对象和新上传的对象进行公共访问?
- wordpress - 使用 Docker Compose 执行插件安装的 WP-CLI 命令
- max - perl6 混合 Str 和 Int 参数的最小值和最大值
- php - Yii2 - Swiftmailer - 为每个用户添加多个动态记录
- c++ - 使用模板代码转发声明类
- javascript - Mongoose Populate 获取用户的所有帖子返回空数组
- macos - 使用 Apple 的 Catalyst 转换为 Mac 时的问题