Portál AbcLinuxu, 10. května 2025 06:15
"Ahoj ja jsem text."
část "ja"
a zbytek použít coby regulární výraz, nebo
(b) zkonstruovat regulární výraz, kterému vyvohuje text Ahoj ja jsem text.
s tím, že namísto ja
tam může být cokoli
?
s/Ahoj .* jsem text\./.../nebo v místě ja může být jedno slovo
s/Ahoj \S+ jsem text\./.../a pod.
On má na mysli něco na způsob:
echo "ahoj lidi" | sed -e "s/`echo "lydi" | sed -e "s/y/i/g"`/opice/g"@Tomasko Takže si přečti něco o vnořenýh příkazech.
// Jakékoliv připomínky jsou vítany, jelikož bash téměř nepoužívám a tohle jsem momentálně vyzkoušel dokonce v cygwinu.
co treba takto nejak:
use strict;
use warnings;
use 5.012;
my $text = 'Dobry den damy a panove dneska je krasny pekny den.';
my $regex = 'damy a panove';
my $new_text = 'panove a damy ';
my $built_regex;
for (split / /, $regex) {
$built_regex.= $_.' [\sa]* ' unless ($_ ~~ /\s+/msxi) or ($_ ~~ /^a$/msxi);
}
$text =~ s/$built_regex/$new_text/msxi;
say $text;
pripadne variace na toto tema s upravou zravosti
use strict;
use warnings;
use 5.012;
my $text = 'Dobry den damy a panove dneska je krasny pekny den.';
my $regex = 'damy a panove';
my $new_text = 'panove a damy';
my $built_regex;
for (split / /, $regex) {
$built_regex.= $_.' [\sa]*? ' unless ($_ ~~ /\s+/gmsxi) or ($_ ~~ /^a$/gmsxi);
}
$text =~ s/$built_regex/$new_text/msxi;
say $text;
use 5.010; my $text = "Dobry den damy a panove dneska je krasny pekny den."; my $tohle_se_ma_ignorovat=qr{\s+a\s+|\s+}; my $reg_vyraz = qr(\bdamy${tohle_se_ma_ignorovat}panove\b); $text =~ s/$reg_vyraz/panove i damy/g; say $text;
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.