2013-05-06 3 views
0

Здравствуйте, я хочу проанализировать файл со структурой вроде этого ... после имени: {} это могут быть другие вещи с одинаковой формой. что нибудь: {}.Как разобрать некоторый текст из файла в Perl

--- 
NAMES: 
    first_thing: {} 

    second_thing: {} 

    name: {} 

Благодарим за ответы.

Я хочу, чтобы разобрать его в этой форме

first_thing 
second_thing 
name 
+3

Это не представляется возможным ответить на ваш вопрос написано. Например, непонятно, что вы пытаетесь проанализировать из файла и как его следует структурировать. Пожалуйста, уточните свой вопрос. –

+6

Также расскажите нам о том, что вы попробовали, или укажите сумму, которую вы готовы заплатить, чтобы выполнить свою работу. –

+1

Я хочу удалить первые 2 строки и с другими строками. Я хочу только одно слово без скобок и (:) двоеточие –

ответ

1
perl -ne 'print "$1\n" if /^\s+ (\w+)/x' file 

На окнах:

perl -ne "print qq{$1\n} if /^\s+ (\w+)/x" file 
+0

Невозможно найти ограничитель строк" "" где-либо перед EOF на -e строке 1. –

+0

'my $ input =" input.txt "; my @myarray = '' perl -ne "print qq {$ 1 \ n}, если/^ \ s + (\ w +)/x" $ input'; ' Спасибо за ответ. Могу ли я спросить вас, как я могу преобразовать его в другой файл? результат myarray to output.txt fo example –

+0

perl -ne "print qq {$ 1 \ n}, если/^ \ s + (\ w +)/x" file> output.txt –

0

Это может помочь

preg_match_all('/^(\w+):\s(.*?)$/m', $input, $output, PREG_SET_ORDER); 
+0

Неопределенная подпрограмма & main :: preg_match_all, вызываемая в строке test.pl 5. –

+0

'#!/Usr/bin/perl my $ input =" $ input.txt "; my $ output = "$ output.txt"; if (preg_match_all ('/^(\ w +): \ s (. *?) $/M', $ input, $ output, PREG_SET_ORDER)) { печать «УСПЕХ»; } else { print "FAILED"; } ' –

+0

Извините, что функция PHP, я не понял, что вы запрашиваете perl, в любом случае попробуйте это в perl' @output = ($ input = ~ m/^ (\ w +): \ s (. *?) $ /); ' –