Добавление суффикса к совпадающему регулярному выражению не работает

VLANозначает Virtual Lan. Это способ реализовать изолированные локальные сети в одной локальной сети (, т. е. медь и оборудование являются общими ), поэтому, если только:

  • Ваш VPS размещен у одного и того же провайдера в одной физической локальной сети
  • Ваш хостер может создать вам выделенную VLAN на своем оборудовании.

Использование VLAN будет невозможно.

VPNозначает Virtual Private Network. Это способ соединения нескольких локальных сетей (или хостов, входящих в состав нескольких локальных сетей ), в одну виртуальную.

Что касается ваших потребностей, вы можете использовать VPN для соединения вашего VPS.

Что касается вашего вопроса о крупных частных поставщиках облачных услуг, у них есть собственный центр обработки данных с выделенной сетью и оборудованием, так что, я думаю, (но трудно сказать, поскольку это совершенно непрозрачно для пользователей ), что они управляют частными облако с использованием изоляции VLAN.

1
06.03.2020, 16:49
2 ответа

Это не удается, потому что вы пытаетесь сопоставить [0-9]в конце строки, но ваш ввод НЕ ИМЕЕТ [0-9]в конце любой строки, каждая строка заканчивается [0-9]\r. Вы можете сделать соответствие регулярному выражению, используя /...[0-9]\r$/вместо ...[0-9]$/в своем регулярном выражении. См. , почему --мой -инструмент -выводит -перезаписывает -сам -и -, как -делает -и -исправляет -it?noredirect=1 #comment97778025 _45772525 для получения дополнительной информации об окончаниях строк DOS.

Вот как обрабатывать только окончания строк UNIX, только окончания строк DOS и и то, и другое:

$ printf '654.12.32\n' | cat -v
654.12.32

$ printf '654.12.32\r\n' | cat -v
654.12.32^M

$ printf '654.12.32\n' | sed -E 's/\.([0-9][0-9])$/\100/' | cat -v
654.123200

$ printf '654.12.32\r\n' | sed -E 's/\.([0-9][0-9])$/\100/' | cat -v
654.12.32^M

$ printf '654.12.32\r\n' | sed -E 's/\.([0-9][0-9])\r$/\100/' | cat -v
654.123200

$ printf '654.12.32\r\n' | sed -E 's/\.([0-9][0-9])(\r?)$/\100\2/' | cat -v
654.123200^M

$ printf '654.12.32\n' | sed -E 's/\.([0-9][0-9])(\r?)$/\100\2/' | cat -v
654.123200
1
28.04.2021, 23:21

Если я вас правильно понял, это может сработать:

sed -E 's/^(.{3}\..{2}\..{2})$/\100/' file

Выход:

46066.874.89
48569.123.56
56489.256.88
654.12.3200
84689.25.69

Ваше регулярное выражение не работает, потому что оно соответствует

46066.874.89
48569.123.56
56489.256.88
654.12.32
84689.25.69

, так что вывод будет:

46066.874.8900
48569.123.5600
56489.256.8800
654.12.3200
84689.25.6900
0
28.04.2021, 23:21

Теги

Похожие вопросы