Я бы не стал использовать sed
- я не думаю, что это хороший инструмент для этой цели из-за присущей ему строчно-ориентированной природы.
Вместо этого я бы предложил:
#!/usr/bin/env perl
use strict;
use warnings;
while (<>) {
#print current line (because we insert _after)
print;
#extract the number. If you need to work on _actual_ line number, you need $.
my ($num) = m/^(\d+)/;
if ( $num > 13 and m/;/ ) {
#print snippet, bail out
print ++$num, " SNIPPET\n";
last;
}
}
#print rest of file
print <>;
Примечание - это извлекает нумерацию из содержимого на основе вашего примера. Я не мог точно сказать, нужны ли вам реальные номера строк - хотя sed -e '13 .. '
подразумевает, что вы это делаете.
В каком случае:
if ( $. > 13 and m/;/ ) {
print "SNIPPET\n";
last;
}
Ответить на этот вопрос может быть, а может и не быть.
Сначала используйте yum
, чтобы проверить, принадлежит ли бинарный файл PHP установленному пакету:yum whatprovides '*bin/php'
Если yum
не находит пакет, то, скорее всего, он не был установлен через yum
. Я говорю, скорее всего, в случае повреждения базы данных yum.
Если он не был установлен via
yum, то было бы невозможно определить, был ли он установлен через make
, потому что make
обычно не оставляет никаких следов его использования; Он копирует файлы туда, куда им нужно, но не оставляет записи об этом.
Выполнить rpm -qf /usr/local/php-7.1.16/bin/php
.
Если он отвечает:
file /usr/local/php-7.1.16/bin/php is not owned by any package
тогда вы точно знаете, что файл не был установлен с помощью какого-либо инструмента управления пакетами RPM.
Как уже говорили другие, тот факт, что он установлен в /usr/local
, указывает на то, что он определенно не установлен из стандартных пакетов дистрибутива. Он может быть установлен с использованием make
или RPM-пакета стороннего -.
Единственный способ (в некоторой степени )подтвердить, что файлы были установлены вместе с make
, — это найти в системе дерево исходного кода PHP 7.1.16 с .o
или другими файлами объектного кода. присутствует (= указывает, что исходный код действительно был скомпилирован )и их временные метки близки к временным меткам двоичного файла PHP в /usr/local/php -7.1.16/bin/php.