Как удалить все совпадающие шаблоны, кроме верхнего, в sed?

Сеть работает не так, как вы думаете. IP-адреса назначаются сетевым интерфейсам , а не ПК и не программам. Сегменты LAN (, подключенные через коммутатор ), должны иметь общий IP-префикс.

Вот такая ситуация может быть:

+------------------------+   +-----------+  
|          PC A          |   |   PC B    |
|                        |   |           |
| eth1         eth0      |   | eth0      |
| 10.70.70.1   10.49.1.1 |   | 10.49.1.8 |
+------------------------+   +-----------+
    |             |                |
----+             +----------------+
switch                  switch
10.70.70.0/24           10.49.1.0/24

В этом случае ПК A может отправлять пакеты на ПК B, используя 10.49.1.8, а ПК B может отправлять пакеты на ПК A, используя 10.49.1.1в качестве пункта назначения. Если на ПК B есть маршрут вида

 ip route add 10.70.70.0/24 dev eth0 via 10.49.1.1

, тогда ПК B отправит весь пакет на 10.70.70.*сначала на ПК A, и, в частности, он достигнет ПК A под 10.70.70.1, если какое-то приложение привязано ко всем сетевым интерфейсам или к этому конкретному интерфейсу .

Вы этого хотели?

Если нет, подробно объясните, какие приложения вы пытаетесь заставить сотрудничать и каким образом, и почему, вы думаете, что вам нужны два IP-адреса для ПК A.

0
31.08.2019, 07:06
1 ответ

Вы можете использовать sortс опцией --uniqueдля достижения желаемого:

$ sort --unique --key=1,1 file.txt
1.1.1.1 abc
1.2.2.2 ddd

или сокращенно

sort -uk1,1 file.txt

Опция --uniqueподавляет строки с одинаковыми полями, которые уже были обработаны и --key=1,1определяет первое поле как ключ сортировки(начало и конечную позицию).

1
28.01.2020, 02:39

Теги

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