Как преобразовать этот формат временной метки в другой формат в Perl?

Это сработало для меня:

**#!/bin/bash

echo " enter source folder name" ;
read Code ;
echo " enter destination folder name"
read destination ; 

echo " input folders to exclude" ;
read folders ;
input="$folders" 

echo the folders entered are $input
for cols in $input ;
do
echo $cols >> log.txt

rsync -RravhP --exclude-from log.txt $Code $destination

log.txt**
0
26.07.2017, 09:41
2 ответа
$ perl -pe 's/\b(\d\d)(\d\d)(\d{4})-(\d\d)(\d\d)\+\d{4}\b/$3-$2-$1\x27T\x27$4:$5:00/g' ip.csv
 Ni, Aika, Aika_l Un, Unen, Unen_kesto, Uniluokat_R, Uniluokat_k, Uniluokat_s, HRV_RMSSD_a, HRV_RMSSD_i, Kokonaisp, Palautumisen_k, Hermoston_t, Syke_ave_m, Syke_a, Syke_l, Hengitystiheys_ave_m, Hengitystiheys_a, Hengitystiheys_min_a, Liikeaktiivisuus_l, Liikeaktiivisuus_a, Paivamaara_l
 "Masi", 2010-07-23'T'22:00:00, 2010-07-24'T'06:00:00 70, 7h40, 6h30, 1h40, 3h40, 1h10, 67.0, 43.0, 24.0, 430, 30, 70, 50, 40, 20, 10, 10, 150, 260, 24.10.2010
 "Masi", 2010-07-23'T'22:00:00, 2010-07-24'T'06:00:00 70, 7h40, 6h30, 1h40, 3h40, 1h10, 67.0, 43.0, 24.0, 430, 30, 70, 50, 40, 20, 10, 10, 150, 260, 24.10.2010
  • \bграница слова
  • (\d\d)фиксирует две последовательные цифры, (\d{4})фиксирует четыре из них и так далее
  • \x27для одинарных кавычек. Если после этого могут быть несвязанные цифры, возможно, лучше использовать восьмеричное представление\047
  • , поскольку поиск и замена предназначены только для определенного формата ddMMyyyy-HHmm+0300, это не повлияет на заголовок. Тем не менее, если необходимо, просто добавьте if $.>1после команды замены

Вероятно, команды paste+awk, используемые для создания ввода, можно легко включить в эту команду, но потребуется добавить эту информацию в вопрос

2
28.01.2020, 02:25

Вот что бы я сделал:

#!/usr/bin/env perl
# https://stackoverflow.com/a/33995620/54964

use strict;
use warnings;
# https://stackoverflow.com/a/20007784/54964
# http://perldoc.perl.org/POSIX.html
use POSIX qw(strftime);
use DateTime;
use DateTime::Format::Strptime qw(strptime);

my $str = '23072017-2200+0300';
my $dtime = strptime( '%d%m%Y-%H%M%z', $str );
my $f = '%Y-%m-%d\'T\'%H:%M:%S';
my $t = strftime( $f, 0, $dtime->minute, $dtime->hour, $dtime->day, $dtime->month-1, $dtime->year-1900, -1, -1, $dtime->time_zone );

print "$t\n";

Вывод, как и ожидалось, в поле времени

2017-07-23'T'22:00:00
1
28.01.2020, 02:25

Теги

Похожие вопросы