У меня есть сценарий, который работает хорошо, но проблема, с которой я сталкиваюсь, состоит в том, что он объединяет все слова в матче и удаляет интервал. Если кто-нибудь может помочь мне рассказать, что у меня есть или у меня пропало без вести, чтобы сценарий не сочетал слова в матче.Perl Script Is Is Spaces in Match
use strict;
my $find = '^M0|MT';
my $match = 0;
open (NEW, ">", "Output.txt") or die "could not open:$!";
open (FILE, "<", "File.txt") or die "could not open:$!";
while (<FILE>) {
chomp;
if ($match){
$match = 0;
s/\s+//g;
print NEW "$_\n";
}
if (/$find/){
$match = 1;
print NEW "$_"
}
}
close (FILE);
close (NEW);
Пример файла
U# mul acc UNIT # HAS MULTIPLE ACCOUNTS FAIL
Выход Пример (Что сейчас происходит с моим сценарием)
U#mulaccUNIT#HASMULTIPLEACCOUNTSFAIL
Что вы пытаетесь сделать с помощью строки 's/\ s + // g;'? – ThisSuitIsBlackNot
Код, который вы предоставили, не дает выход, который вы заявляете для ввода образца. Он создает пустой файл. Причина в том, что вы ищете '^ M0 | MT', которого нет в образце File.txt. Изменение файла образца в соответствии с этим регулярным выражением по-прежнему не приводит к выходу. Вместо этого исходная строка сохраняется в файле Output.txt (с отсутствием новой строки). – bart
из-за личной информации, я удалил первую строку, которую она ищет, извините за это, я должен добавить общую строку. На моем (/ $ find /), как я могу установить печать NEW для печати, только печать NEW, если символы соответствуют первым столбцам строки? @bart – PhoenixJay