Как изменить выбранные значения в текстовом файле, используя Perl - PullRequest
3 голосов
/ 21 июня 2010

Мне нужна помощь, чтобы написать некоторый код Perl, чтобы заменить некоторые выбранные значения в текстовых файлах. Ниже приведен пример моих текстовых файлов. Я хочу заменить значение «конец» новым значением в формате даты ГГГГММДД, увеличить значение ключа на 1, а остальное должно остаться прежним.

Исходный файл:

    server=host1
    network=eth0
    start=YYYYMMDD
    end=YYYYMMDD
    key=34

Если я изменю значение «конец» на ггггммдд (новая дата) и «ключ» на +1. выходной результат должен быть:

    server=host1
    network=eth0
    start=YYYYMMDD
    end=yyyymmdd
    key=35

Пожалуйста, предложите решение для этого.

Ответы [ 2 ]

2 голосов
/ 21 июня 2010

* редактировать: похоже, что я неправильно прочитал вопрос новое решение:

#!/usr/bin/perl
$filename = "a.txt";
$tempfile = "b.txt";
$newdate = "whatever";

open(IS, $filename);
open(OS, ">$tempfile");
while(<IS>)
{
    if($_ =~ /^end=(.*)$/){
        print OS "end=$newdate\n";
    } elsif ($_ =~ /^key=(.*)$/) {
        print OS "key=".($1+1)."\n";
    } else {
        print OS $_;
    }
}
close(IS);
close(OS);
unlink($filename);
rename($tempfile, $filename);
1 голос
/ 21 июня 2010

Как насчет этого:

#!/usr/bin/env perl

while (<>) {
    s/^end=/WHATEVER=/gi;
    if (/^key=/) {
        ($key,$val) = split("=");
        $val = $val + 1;
        $_ = "$key=$val";
    }
    print;
}

В unix cat ваш текстовый файл | this.pl чтобы получить его на стандартный вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...