#!usr/bin/perl -w
use strict;
use 5.014;
open IN, "<", $ARGV[0] or die "read file error\n"; #以只读方式打开文件,文件句柄为IN, 文件名为命令行里的第一个参数
open OUT, ">", $ARGV[1] or die "out error\n"; #新建文件, 文件句柄为OUT, 文件名为命令行里第二个参数
while(){ #逐行读入文件,以下为按行操作
chomp;
if(/Molecule: ZINC/){
s/Molecule: //; # 行替换, 替换掉"Molecule: ", 即将 "Molecule: ZINC foo"这样的行替换为" ZINC foo"
s/\s//g; # 继续替换上一行,替换掉剩余的所有空格(包括空格,横竖制表符,换行符,换页符), 即将" ZINC foo"替换为"ZINCfoo"
print OUT; # 将替换完的行写入 文件(命令行里第二个参数)
}elsif(/Amber Score:/){
s/Amber Score://; # 和上面一样,替换掉“Amber Score:”以及所有空格, 并写入刚才打开的那个文件, 写入时每行的格式为:“制表符”“被替换以后的行内容”“换行符”
s/\s//g;
print OUT "\t$_\n";
}
}
总结一下, 就是读入这样的文本:
Module: fuck1
Amber Score: 998
Module: fuck2
Amber Score: 101
Module: fuck3
Amber Score: 250
然后输出这样的文件:
fuck1 998
fuck2 101
fuck3 250
说真的,吐了,这脚本写得太烂了。