Используйте PDO
и подготовленные запросы.
($conn
- объект PDO
)
$stmt = $conn->prepare("INSERT INTO tbl VALUES(:id, :name)");
$stmt->bindValue(':id', $id);
$stmt->bindValue(':name', $name);
$stmt->execute();
Вы могли использовать grep для вытаскивания их.
grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' file.txt
Я предложил бы жемчуг. (\d +.\d +.\d +.\d +), должен, вероятно, добиться цели.
РЕДАКТИРОВАНИЕ: Только для создания его больше как полная программа Вы могли сделать что-то как следующее (не протестированный):
#!/usr/bin/perl -w
use strict;
while (<>) {
if (/(\d+\.\d+\.\d+\.\d+)/) {
print "$1\n";
}
}
Это обрабатывает один IP на строку. Если у Вас есть больше чем один дюйм/с на строку, необходимо использовать/g опцию. человек perlretut дает Вам более подробное учебное руководство на регулярных выражениях.
Вы могли использовать awk, также. Что-то как...
awk '{i=1; если (NF> 0) делают {если ($i ~/regexp/) печатают $i; я ++;}, в то время как (я < = NF);}' файлу
- возможно, понадобится очистка. просто быстрый и грязный ответ для показа в основном, как сделать это с awk
Большинство примеров здесь будет соответствовать на 999.999.999.999, который не является технически допустимым IP-адресом.
следующее будет соответствовать только на допустимых IP-адресах (включая сетевые и широковещательные адреса).
grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' file.txt
Опускают-o, если Вы хотите видеть всю строку, которая соответствовала.
Можно использовать sed. Но если Вы знаете жемчуг, который мог бы быть легче, и более полезным для знания в конечном счете:
perl -n '/(\d+\.\d+\.\d+\.\d+)/ && print "$1\n"' < file
Я обычно начинаю с grep, разбираться в regexp.
# [multiple failed attempts here]
grep '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' file # good?
grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file # good enough
Затем я попытался бы преобразовать его в sed
отфильтровывать остальную часть строки. (После того, как, читая этот поток, Вы и я не собираемся делать это больше: мы собираемся использовать grep -o
вместо этого)
sed -ne 's/.*\([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\).*/\1/p # FAIL
Именно тогда я обычно раздражаюсь из-за sed
для того, чтобы не использовать тот же regexes в качестве никого больше. Таким образом, я перемещаюсь в perl
.
$ perl -nle '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ and print $&'
Польза Perl для знания в любом случае. Если у Вас есть крохотный бит установленного CPAN, можно даже сделать его более надежным по невысокой цене:
$ perl -MRegexp::Common=net -nE '/$RE{net}{IPV4}/ and say $&' file(s)