Perl как удалить вторую строку строки?Perl как удалить вторую строку строки
я могу удалить первую строку, используя этот код:
$cpusttp =~ s/^(.*\n){1}//;
Perl как удалить вторую строку строки?Perl как удалить вторую строку строки
я могу удалить первую строку, используя этот код:
$cpusttp =~ s/^(.*\n){1}//;
Вам не нужно {1}
. Все будет повторяться ровно один раз, если не указано иное.
Кроме того, я не думаю, что регулярное выражение является правильным инструментом для работы. Тем не менее, это должно сделать:
$cpusttp =~ s/^(.*\n)\K(.*\n)//;
Идея заключается в том, чтобы соответствовать первой строке, а затем игнорировать его (\K
), затем сопоставить другую линию.
спасибо, но я не понял, а что еще? –
@GabrielSousa, 'split' /' join' выглядит лучше для меня. Ответ Спририка дает пример. – ndn
Там много способов сделать это:
my $multi_line_string = 'line1
line2
line3
line 4
fifth line';
#regex matches once - second line is the first thing after a linefeed
#\n so it'll remove the second line.
#This wouldn't scale well to removing the 4th line though.
my ($new_string) = $multi_line_string =~ s/\n(.*\n)/\n/r;
print $new_string;
или, возможно:
my @things = split ("\n", $multi_line_string);
print join ("\n", @things[0,2..$#things]);
Или с сращивания:
my $line_to_delete = 1; #arrays start at 0
my @things = split ("\n", $multi_line_string);
splice (@things, $line_to_delete, 1);
print join ("\n", @things);
спасибо, но где я говорю, это вторая строка на коде frist? –
По умолчанию регулярные выражения соответствуют только одному. Вторая строка - первая строка _after_ linefeed ('\ n'), поэтому она работает. (Добавьте модификатор '/ g' regex, и он удалит каждую другую строку!). Я не думаю, что это делает хорошее общее решение (удалить строку N), поэтому я предлагаю split/join, если вы хотите удалить 85-ю строку или подобное. – Sobrique
спасибо большое, нашел решение для меня $ cpusfinal = join ("\ n", @cpufinal [0,4..8]); –
Я не думаю, что вы должны пытаться извлекают строки из середины многострочной строки. Откуда взялась эта строка? Если вы прочитали его из файла, лучше всего его прочитать в массиве. Удаление второй строки сводится к простому соединению @data, 1, 1'. Если вы объясните больше о том, что вы делаете, мы сможем помочь вам лучше – Borodin