perl 从文件中删除行

2024-03-30

我的文件看起来像:

ATOM 2517 O   VAL 160 8.337  12.679  -2.487
ATOM 2518 OXT VAL 160 7.646  12.461  -0.386
TER 
ATOM 2519 N   VAL 161 -14.431  5.789 -25.371
ATOM 2520 H1  VAL 161 -15.336  5.698 -25.811
ATOM 2521 H2  VAL 161 -13.416 10.529  17.708
ATOM 2522 H3  VAL 161 -14.363  9.436  18.498
ATOM 2523 CA  VAL 161   4.400  9.233  16.454
ATOM 2524 HA  VAL 161   3.390  9.170  16.047

我必须删除“TER”、“TER”之前的行以及 TER 之后的行之后的 3 行,并使文件连续,如下所示:

ATOM 2517 O   VAL 160   8.337 12.679  -2.487
ATOM 2519 N   VAL 161 -14.431  5.789 -25.371
ATOM 2523 CA  VAL 161   4.400  9.233  16.454
ATOM 2524 HA  VAL 161   3.390  9.170  16.047

一个简单的逐行脚本。

Usage: perl script.pl -i.bak fileglob

E.g. perl script.pl -i.bak File*MINvac.pdb

这将更改原始文件,并以扩展名保存每个文件的备份.bak。请注意,如果TER行出现得太靠近文件末尾,会导致警告。另一方面,提出的其他解决方案也是如此。

如果您不想保存备份(请小心,因为更改是不可逆的!),请使用-i反而。

Code:

#!/usr/bin/perl
use v5.10;
use strict;
use warnings;

my $prev;
while (<>) {
    if (/^TER/) {
        print scalar <>;  # print next line
        <> for 1 .. 3;    # skip 3 lines
        $prev = undef;    # remove previous line
    } else {
        print $prev if defined $prev;
        $prev = $_;
    }
    if (eof) {  # New file next iteration?
        print $prev;
        $prev = undef;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

perl 从文件中删除行 的相关文章

  • 用于编译和运行 C++ 的 bash 脚本

    我正在尝试进入 C 但必须使用冗长的命令通过命令行运行东西很烦人 所以我想制作一个 bash 脚本来简化过程并运行这些命令 bin bash if 1 start then cd CCPP cd HelloWorld g Wall W We
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • Perl Tk 模块有哪些缺点?

    与在 Perl 中创建 GUI 的其他解决方案相比 Tk 模块有哪些缺点 我最近浏览了 Perl 的各种 gui 模块 这是我的总结 免责声明 最终我发现现有模块都不能满足我的需求 所以我开始编写自己的 gui 工具包 Tk 工作起来很不错
  • awk 脚本中出现“BEGIN 块必须有操作部分”错误

    这是我的代码 bin sh filename usr bin find name INSTANCE log echo filename is filename awk BEGIN print Processing file filename
  • 当我尝试在 .bashrc 中添加命令时出现命令未找到消息

    我问了一个问题如何在 bash shell 中编写漂亮优雅的 linux 命令 https stackoverflow com q 19720095 80353 当我尝试该建议时 我收到以下错误消息 Sorry command not fo
  • 在 bash 中添加(收集)退出代码

    我需要依赖于脚本中的几个单独的执行 并且不想将它们全部捆绑在一个丑陋的 if 语句中 我想使用退出代码 每次执行并添加它 最后 如果这个值超过阈值 我想执行一个命令 伪代码 ALLOWEDERROR 5 run something RESU
  • Perl 中可以使用哪种语法糖来减少左/右值运算符与 if 语句的代码?

    那里有很多语句 因为 Perl 是一种非常甜蜜的语言 但任何语言中最常用的语句都是 if 语句和设置值的组合 我想我已经找到了很多 但仍然存在一些空白 最终 目标是不必多次编写变量名 这是我到目前为止所拥有的 r s r s unless
  • 如何使用 docker ENTRYPOINT 与 shell 脚本文件组合参数

    我编写 shell 脚本文件并将其与 docker ENTRYPOINT 一起使用 但是当我运行 docker image 时 由于入口点代码行 它只是停止而没有任何错误日志 我的 Dockerfile FROM ubuntu 16 04
  • unix df 上的正则表达式帮助

    我需要一些帮助来调整我的代码以查找此 UNIX 中的另一个属性df output Ex Filesystem Size Used Avail Capacity Mounted on dev ad4s1e 61G 46G 9 7G 83 ho
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • Bash:递归复制命名文件,保留文件夹结构

    我希望 cp R src prog js images icon jpg tmp package 将在目标目录中产生对称结构 tmp package src prog js images icon jpg 但相反 这两个文件都被复制到 tm
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • 使用 SIGINT 默认处理程序时从 system() 返回值

    我遇到了一些奇怪的返回值system 当子进程从终端接收到 SIGINT 时 解释一下 从 Perl 脚本parent pl I used system 运行另一个 Perl 脚本作为子进程 但我还需要通过 shell 运行子进程 所以我使
  • Perl 非贪婪

    我遇到非贪婪正则表达式 regex 的问题 我已经看到有关于非贪婪正则表达式的问题 但它们没有回答我的问题 Problem 我正在尝试匹配 lol 锚点的 href Note 我知道这可以通过 Perl HTML 解析模块来完成 我的问题是
  • 静默检查 bash 脚本中是否存在 rpm

    我正在尝试使用 if 语句快速检查 rpm 是否安装在 bash 脚本中 但我想默默地做 目前 当我运行脚本并且 rpm 确实存在时 它将 rpm 的输出输出到我不想要的屏幕 if rpm qa grep glib then do some
  • Perl 的 caller() 函数返回错误的行号

    我在 Perl 5 10 1 上运行了以下脚本 usr bin perl use strict use warnings foreach my x 0 x lt 1 x Line 5 print line Line 6 sub print
  • 如何让 mod_perl 在更改时重新加载源文件?

    我正在开发一个带有 mod 的应用程序 perl 并在每次更改代码时重新启动服务器是一个巨大的阻力 我还是想用mod perl 用于开发 因为我计划将其用于实时服务器 我在文档中没有看到有关如何执行此操作的任何内容 想法 我认为 Apach
  • bash 脚本抱怨文件名太长

    所以我有一个脚本可以执行此操作 jq 是命令行 JSON 处理器 echo Getting LB Node IDs echo LB STATUS jq loadBalancer nodes id 最后一行的输出是 1 2 3 但是当我尝试将
  • 为什么这个符号链接创建了两个实例

    我有一个用于我的点文件的安装脚本 我用来创建一个目录到我的主文件夹的符号链接 这些链接执行得很好 但创建了第二个符号链接 我无法解释为什么 项目中的文件夹结构如下所示 install sh scripts shell sh shell in
  • HTTP POST 操作出现错误代码 302

    我有一个 perl 脚本 它将数据发送到我用 php 编写的 Web 服务 这是代码 use LWP UserAgent my ua LWP UserAgent gt new my server endpoint http example

随机推荐

  • 如果我只知道文件名的一部分,如何打开文件?

    我需要打开一个我不知道完整文件名的文件 我知道文件名是这样的 filename esy 我确信该文件在给定目录中只出现一次 filename esy已经是一个 shell Ready 通配符 如果情况总是如此 您可以简单地 const SO
  • Skylake 中干净缓存行的写回?

    我观察到 Skylake SP 在真实硬件上对干净的缓存行进行写回 Leeor 对这篇文章的回答对于 Intel Core i3 i7 数据从缓存集中逐出后的去向 https stackoverflow com questions 1941
  • RESTful API 根据用户角色不同的响应

    我使用 Laravel 作为我的 PHP 框架 这是一个约定index show store 控制器中的功能 我有两种类型的用户 管理员和普通用户 让我们假设有一个Order 在餐厅 模型 我想实施index其控制器的功能 一位用户可以有多
  • 窗格形状修改

    好吧 长话短说 我正在尝试创建一种聊天 消息系统 并且需要一点帮助 我正在尝试在容器上创建一个箭头 如下图所示 该图像是从 ControlsFX 及其 PopOver 窗口中取出的 我不能使用他们的弹出窗口小部件 因为它的行为与我使用它的目
  • 获取查询的运行时执行计划

    我有一个执行一些 sql 查询的应用程序 如何从 sqlplus 或其他 Oracle 客户端获取当前正在执行的查询的执行计划 如果有必要 我可以修改应用程序中使用的 oracle 会话 我不想使用explain plan并手动执行该查询
  • sql 中的希伯来语和其他语言

    我有 SQL Server 托管 客户端是移动应用程序 我的逻辑是用户创建数据并将其存储在服务器上 有些数据是文本 然而 用户可以输入英语 希伯来语或他的客户端支持的任何其他语言 我需要为表指定哪种排序规则才能支持所有语言 问候 约阿夫 您
  • Windows 调试工具未安装

    我正在尝试通过 Windows SDK 安装 Windows 调试工具 两次尝试后我不知道该怎么做 我开始安装 没有收到任何错误 但调试工具 windbg 和 kd 却找不到 日志几乎毫无用处 9 16 59 PM Monday July
  • AttributeError:“CharField”对象没有属性“model”

    models py file from django db import models class Stocks models Model symbol models CharField max length 20 unique True
  • 如何从语言代码中获取语言的全名? (例如:从“en”到“English”)

    我正在寻找与此问题 答案等效的 dart 从语言代码中获取该语言的语言名称 https stackoverflow com questions 36061116 get language name in that language from
  • 如何监控 Amazon S3 服务中对象的带宽?

    如何以编程方式监控AWS S3服务中对象的带宽 我想这样做是为了防止使用我们服务的客户过度使用带宽并导致我们的成本超出我们的承受能力 我们希望限制每个对象 1TB 的带宽 详细的使用情况报告仅针对每个存储桶 而不是每个对象 你能做的是启用日
  • Web2py:下载文件/显示图像

    我最近开始使用 Web2py 框架 我发现它非常好 然而 我现在遇到了一个 基本 问题 Context 我正在构建的网站是一个科学代码界面 人们填写表格并提交 然后 数据 写入共享文件夹内的文件中 由代码处理 在后台作为守护进程运行 代码与
  • IE10 Flexbox 宽度包含填充,导致溢出。 box-sizing: border-box 没有修复

    本例中的 LHS flex 子项具有 1em 填充 这将导致 RHS 溢出父项 div style display ms flexbox width 200px border 5px solid black div style paddin
  • 为什么要将新的 ArrayList 分配给 List 变量?

    我是java新手 当我浏览网上许多示例的代码时 我看到人们声明变量ArrayList简单地说List几乎在所有情况下 List
  • 贝叶斯网络与 R

    我正在尝试建立贝叶斯网络模型 但是我无法安装合适的软件包 尝试过gRain bnlearn and Rgraphviz用于绘图 我在 R 2 15 和 3 2 中尝试过 以下是错误消息 library gRain Loading requi
  • Jquery .click 不触发

    尝试在这里学习 JQuery 一开始非常简单 当我单击该按钮时 页面会重新加载 但什么也没有发生 这是我的 JS 这是我的html div class panel right div
  • Oracle 位和函数

    我对 oracle bitand 功能感到困惑 我知道它用于控制是否设置两位 但是 被设定的意义何在 何时以及为何使用它 如果你能给出一个基于真实例子的例子 我会很高兴 感谢您的回答 在二进制中 set 的意思是 值为 1 未设置 意味着
  • KnpSnappyBundle 和 Symfony 3.4:图像和/或 css 导致超时

    我已经在现有的 Symfony 3 4 项目上安装了 KnpSnappyBundle 我已经用 HTML 树枝测试了 PDF 生成器 仅包含文本 没有图像 没有 css 没有 js 它工作正常 然后我使用绝对 URL 添加 到树枝 图像和
  • MySQL Select...用于更新索引存在并发问题

    这是我上一个问题的后续问题 您可以跳过它 因为我在这篇文章中解释了该问题 MySQL InnoDB SELECT LIMIT 1 FOR UPDATE 与 UPDATE LIMIT 1 https stackoverflow com que
  • 在多个数据库上实现事务

    我正在对多个数据库执行数据更改 并且我想实现一个涵盖所有更改的事务 这就是我目前所拥有的 try db 1 begintransaction db 1 ExecuteNonQuery db 2 begintransaction db 2 E
  • perl 从文件中删除行

    我的文件看起来像 ATOM 2517 O VAL 160 8 337 12 679 2 487 ATOM 2518 OXT VAL 160 7 646 12 461 0 386 TER ATOM 2519 N VAL 161 14 431