копирование данных из нескольких файлов и добавление в разные файлы - PullRequest
1 голос
/ 11 ноября 2011

хорошо, я не уверен, возможно ли это вообще или нет .. Я могу звучать стохастически Есть около 250 файлов с именами Например: 1

1_0.pdb,1_60.pdb,1_240.pdb,....50_0.pdb,50_60.pdb,50_240.pdb..... с некоторыми данными.

Теперь для каждого из вышеуказанных файлов есть другой файл с таким же именем .... просто добавляется файл префикса ... Как: Например: 2

file1_0.pdb,file1_60.pdb,file1_240.pdb,....file50_0.pdb,file50_60.pdb,file50_240.pdb..... снова с некоторыми данными.

Возможен ли код, который может скопировать данные из каждого файла из первого примера и вставить его в соответствующий файл в example2 ..? как от 1_0.pdb до file1_0.pdb ... Надеюсь, я не случайный и более понятный ...

Ответы [ 3 ]

3 голосов
/ 11 ноября 2011

С Perl вы можете сделать что-то вроде

#!/usr/bin/perl -w

use strict;

my @filenames = qw(1_0.pdb 1_60.pdb 1_240.pdb);

for my $filename (@filenames) {

    open(my $fr, '<', $filename) or next;
    open(my $fw, '>>', "file$filename") or next;

    local($/) = undef;
    my $content = <$fr>;

    print $fw $content;

    close $fr;
    close $fw;
}

EDIT:

Вместо перечисления всех имен файлов в

my @filenames = qw(1_0.pdb 1_60.pdb 1_240.pdb);

вы могли бы сделать что-то вроде

my @filenames = grep {/^\d+_\d+/} glob "*.pdb";
1 голос
/ 11 ноября 2011

Попробуйте этот код:

use strict;
use warnings;

foreach my $file (glob "*.pdb") {
  next if ($file =~ /^file/);

  local $/ = undef;
  my $newfile = "file$file";

  open(my $fh1, "<", $file) or die "Could not open $file: " . $!;
  open(my $fh2, ">>", $newfile) or die "Could not open $newfile: " . $!;

  my $contents = <$fh1>;

  print $fh2 $contents;

  close($fh1);
  close($fh2);
}

Если вы хотите перезаписывать содержимое файлов, а не добавлять их, измените ">>" на ">" во втором операторе open.

0 голосов
/ 11 ноября 2011

Этот сценарий оболочки также будет работать

foreach my_orig_file ( `ls *.pdb | grep -v ^file` )
set my_new_file = "file$my_orig_file"
cat $my_orig_file >> $my_new_file
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...