Es porque tiene su VM configurada en "Solo host" para el tipo de red. Esto crea una NIC virtual para su sistema operativo host y configura una subred privada, lo que permite la comunicación entre el host y la VM, pero eso es todo.
Desea configurar su VM como red "puenteada" -esto la adjuntará a la NIC del host y permitirá que su enrutador proporcione una dirección a su VM a través de DHCP. Será como cualquier otra computadora en su red.
Tenga en cuenta que en algunos entornos corporativos/escolares, así como en hoteles, centros de conferencias, cibercafés, etc., algunas configuraciones bloquearán varias direcciones IP en un "puerto" o bloquearán varias direcciones MAC detrás de un "puerto".
Использованиеgrep
:
grep -oE '\w+\.\w+'
\w+
-Соответствует любому символу слова (, равному[a-zA-Z0-9_]
)+
-Квантификатор — Соответствует от одного до неограниченного количества раз, столько раз, сколько возможно, возвращая по мере необходимости (жадный)\.
-Соответствует символу .
буквально (с учетом регистра)
Опция -o
для grep
говорит, что нужно возвращать только совпадение, опция -E
разрешает расширенное регулярное выражение.
По существу, это будет соответствовать любому слову или сочетанию слов, содержащих точку.
$ echo 'foo bar Testy.mctestface 1337 taco' | grep -oE '\w+\.\w+'
Testy.mctestface
Если ваше слово может содержать специальные символы, вы можете использовать что-то вроде:
grep -oE '\S+\.\S+'
\S+
будет соответствовать любому не -пробельному символу от одного до неограниченного количества раз.
Возможно:
sed '
s/.*/ & /
:1
s/ [^.]\{1,\} / /g
t1
s/^ //;s/ $//'
Помимо grep или sed , вы можете использоватьawk
:
{
for(i=1; i <= NF; i++)
if ($i ~ /\./)
out=out" "$i
print out
out=""
}
... для сохранения в файл и запуска через awk -f thatfile input1 input2...
или:
awk '{ for(i=1; i <= NF; i++) if ($i ~ /\./) out=out" "$i; print out; out="" }' input
... чтобы поместить скрипт в командную строку -.
Awk автоматически разделяет каждую строку ввода для вас на основе пробелов (значения по умолчанию его специальной FS
переменной ). Сценарий перебирает каждое результирующее поле этого разделения и запускает тест :, если значение этого поля содержит точку (, экранированную, поскольку точка — это специальный токен в регулярных выражениях ), а затем добавляет это поле (. ] с пробелом )в новую строку, которую мы выведем в конце. Это приводит к пропуску полей, не содержащих точку. Как только цикл по полям завершен, мы печатаем это восстановленное значение (вout
)и сбрасываем его на пустую строку, если во входных данных есть больше строк.
Немного упрощенная версия ответа awk
:
awk '{ for (i=1; i<=NF; i++) if ($i !~ /\./) $i = ""; print; }'
Для каждого слова, если оно не содержит точку, вычеркнуть его. Затем распечатайте то, что осталось.
Перечитав вопрос, я вижу, что в нем говорится «каждое слово… которое не имеет точки в середине его ». Так, например, ввод
Mr. Smith ate.5 pies in New York.
не должен выводить ничего, потому что нет слова с точкой в середине. Напротив,
Mr.Smith ate 1.5 pies in New York.
следует указать Mr.Smith
и 1.5
. Таким образом, команда должна быть
awk '{ for (i=1; i<=NF; i++) if ($i !~ /.\../) $i = ""; print; }'
Для каждого слова, если оно не содержит точки, по крайней мере с одним другим символом перед ним и после него, затереть слово.