Как мне включить команды sed в Perl-скрипт? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь включить эти основные команды sed в мой Perl-скрипт.

sed "1,$s/^/20181230,/g" usd_jan_ora.txt > u2_1231.txt
sed "1,$s/,2018-12-3[0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]+0000//g" u2_1231.txt > u3_1231.txt
sed "1,$s/\([A-Z][A-Z][A-Z]\),[0-9]*\.[0-9][0-9][0-9][0-9]/\1/g" u3_1231.txt > u4_1231.txt

Хотя было несколько сообщений об этом, я все еще новичок в Perl, и мне трудно переводить эти ответы на мою конкретную проблему.

Пока что я написал этот скрипт для перехода к URL и загрузки веб-страницы в виде txt-файла. Теперь мне нужно отредактировать этот текстовый файл в формате, необходимом для следующего шага.

use strict;
use warnings;
use HTML::FormatText;
use LWP::Simple;


my      $dateField = 'date=2018-12-31';
my      $currency  = "USD";
my      $filename = 'C:\Users\My.Name\Downloads\doc3.txt';
my      $address = "my.url";
my      $content = get($address);

my $s = 1;

defined $content or die "Cannot read '$address': $!";

my $string = HTML::FormatText->format_string
(
    $content,
    leftmargin  =>  5,
    rightmargin => 75,
);

open(my $file, '>', $filename) or die $!;
print $file $string;

my $cmd = "sed '1,$s/^/20181230,/g' doc3.txt > test.txt";

print "Launching [$cmd]\n";

system($cmd) == 0
    or die "Couldn't launch [$cmd]: $! / $?";

1 Ответ

0 голосов
/ 09 января 2019

ОК, так что ваши команды sed изменяют длину текста, поэтому вам действительно нужно выполнить изменения перед форматированием вывода, так что это действительно нужно сделать между строками defined $content ... и my $string ....

Команды sed делают несколько выделений в каждой строке документа. Это можно сделать непосредственно в Perl с помощью нескольких настроек, чтобы перейти от регулярного выражения к регулярному выражению Perl

$content =~ s/^/20181230,/gm; # The m option makes ^ match at the start of each line
$content =~ s/,2018-12-3[0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\+0000//g;
$content =~ s/([A-Z][A-Z][A-Z]),[0-9]*\.[0-9][0-9][0-9][0-9]/$1/g;

Затем вы можете отформатировать содержимое и распечатать его в ваш окончательный файл.

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