Как я могу удалить метку времени из имени файла в Perl? - PullRequest
4 голосов
/ 19 февраля 2010

У меня есть файл со строкой:

 /hosting/logs/U01-ecom-SIT01/CU01-DC05-IFIO_SIT01_NU01-nc3sz1ecmas11/waslogs/SystemOut_10.01.21_16.54.18.log`

Мне нужен скрипт, который будет читать эту строку и удалять метку времени из нее, то есть:

 10.01.21_16.54.18

Скрипт должен напечатать имя файла без метки времени и содержать полный путь, то есть:

 /hosting/logs/U01-ecom-SIT01/CU01-DC05-IFIO_SIT01_NU01-nc3sz1ecmas11/waslogs/SystemOut.log`

Пожалуйста, помогите, поскольку я не могу сопоставить шаблон и вывести путь к файлу без отметки времени.

Ответы [ 5 ]

1 голос
/ 19 февраля 2010

Укороченный путь для предотвращения прокрутки:

$ cat paths
CU01-DC05-IFIO_SIT01_NU01-nc3sz1ecmas11/waslogs/SystemOut_10.01.21_16.54.18.log

$ perl -pe 's/(_(\d\d(\.\d\d){2})){2}\.log$/.log/' paths
CU01-DC05-IFIO_SIT01_NU01-nc3sz1ecmas11/waslogs/SystemOut.log

Метка времени состоит из 2 последовательностей, которые выглядят как _##.##.##.Подпоследовательности заканчиваются двумя последовательностями .##.Это роли квантификаторов {2}.

1 голос
/ 19 февраля 2010

$ perl -e 's{_\d{2}\.\d{2}.\d{2}_\d{2}\.\d{2}.\d{2}}{} and print for @ARGV' /hosting/logs/U01-ecom-SIT01/CU01-DC05-IFIO_SIT01_NU01-nc3sz1ecmas11/waslogs/SystemOut_10.01.21_16.54.18.log

1 голос
/ 19 февраля 2010
echo "/hosting/logs/U01-ecom-SIT01/CU01-DC05-IFIO_SIT01_NU01-nc3sz1ecmas11/waslogs/SystemOut_10.01.21_16.54.18.log" | 
  perl -pe "s/_\d\d\.\d\d\.\d\d_\d\d\.\d\d\.\d\d//;"
0 голосов
/ 01 марта 2010

Вы можете использовать следующую кодировку

 use strict;
    use warnings;
  my $var; $var=/hosting/logs/U01-ecom-SIT01/CU01-DC05-IFIO_SIT01_NU01-nc3sz1ecmas11/waslogs/SystemOut_10.01.21_16.54.18.log";
    $var=~s/_\d\d\.\d\d\.\d\d//g;
    # $var=~s/_10\.01\.21_16\.54\.18//g; # You can use this way also 
    print "$var\n";
0 голосов
/ 19 февраля 2010
while(<>){
    @s = split /\// ;
    $fullpath=join("/",splice @s , 0, $#s);
    @a = split /[_.]/ ,$s[-1];
    $newfile="$fullpath/$a[0].$a[-1]";
    print $newfile."\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...