Добавить строки с помощью Perl - PullRequest
2 голосов
/ 10 декабря 2011

Мои строки ввода:

Movies: Action
Adventure
Biography
Comedy
Books:
Biography
Romance
Sci-Fi
War

Моя проблема (реализована в Perl): проверить, как выглядит строка, и если она заканчивается на ":", добавьте следующую строку к ней.

В моем примере он соединяет строку, содержащую «Книги:», со строкой, содержащей «Биографию», но это только один пример - содержимое строк может отличаться во многих отношениях.

Movies: Action
Adventure
Biography
Comedy
Books: Biography
Romance
Sci-Fi
War

Ответы [ 4 ]

0 голосов
/ 10 декабря 2011

Можно использовать утверждение с предварительным просмотром:

s/(?<=:)\s*\n/ /gs;
0 голосов
/ 10 декабря 2011

Вот небольшая программа для работы с вашим вводом:

while (<>) {
  s/\s+$/ / if /:$/;
  print;
}

Поскольку структура в точности соответствует опции -p, вы можете сделать это в одной строке из вашей оболочки:

perl -pe 's/\s*/ / if /:$/' text_file
0 голосов
/ 10 декабря 2011

что-то вроде $text =~ s/:\s*\n/: /msg;

0 голосов
/ 10 декабря 2011

Вы можете сделать:

perl -pe 's/\r?\n$/ / if(/:\s*$/)' file

или

perl -pe 'chomp if(/:\s*$/)' file 

, если у вас все в порядке с отсутствием пробела после :.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...