2016-03-18 3 views
0

У меня есть сценарий, который работает хорошо, но проблема, с которой я сталкиваюсь, состоит в том, что он объединяет все слова в матче и удаляет интервал. Если кто-нибудь может помочь мне рассказать, что у меня есть или у меня пропало без вести, чтобы сценарий не сочетал слова в матче.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 
+1

Что вы пытаетесь сделать с помощью строки 's/\ s + // g;'? – ThisSuitIsBlackNot

+0

Код, который вы предоставили, не дает выход, который вы заявляете для ввода образца. Он создает пустой файл. Причина в том, что вы ищете '^ M0 | MT', которого нет в образце File.txt. Изменение файла образца в соответствии с этим регулярным выражением по-прежнему не приводит к выходу. Вместо этого исходная строка сохраняется в файле Output.txt (с отсутствием новой строки). – bart

+0

из-за личной информации, я удалил первую строку, которую она ищет, извините за это, я должен добавить общую строку. На моем (/ $ find /), как я могу установить печать NEW для печати, только печать NEW, если символы соответствуют первым столбцам строки? @bart – PhoenixJay

ответ

1

Как @ThisSuitIsBlackNot уже указал:

Линия

s/\s+//g; 

Ешьте свои пространства. В нем говорится: замените последовательность из одного или нескольких пробелов ничем и повторите для полной строки ввода.

Похоже, вы хотели сказать:

s/\s+/ /g; 

так, просто заменяя последовательности пробелов одним пробелом.

+0

Спасибо! @ThisSuitIsBlackNot, я знал, что это что-то простое, я просто не мог понять, что это за жизнь. Я очень новичок в PERL, поэтому я медленно изучаю язык, когда иду. – PhoenixJay