У меня есть два вида строк:
EVASA 2144 IN ELABORAZIONE 16278
Мне нужен какой-нибудь Perl-скрипт, чтобы заменить все пробелы одним.
Вывод, который мне нужен:
EVASA 2144
Есть предложения?
Вы можете использовать очень простое регулярное выражение:
#!/usr/bin/perl use strict; my $line = 'EVASA 2144'; # This is the line that actually does the work $line =~ s/\s+/ /g; print $line, "\n";
Я бы посоветовал вам потратить некоторое время на чтение учебника по регулярным выражениям , который распространяется с каждой современной версией Perl.
$a = "hello \t world"; $a =~ s/\s+/ /; print $a;
, если в строке может быть несколько мест, где вы хотите произвести замену, используйте
$a = "hello \t world hi"; $a =~ s/\s+/ /g; print $a;
Вы также можете использовать оператор tr с опцией s, это может сделать больше для вас (преобразование символов), возможно, быстрее, чем подход регулярного выражения
tr
s
$a =~ tr/ \t/ /s;
Объяснение можно найтив справочной странице perlop:
perlop
perldoc perlop