На экране ifconfig -a
показаны все устройства, которые были распознаны и имеют соответствующие драйверы.
Обычный ifconfig
показывает только включенные и настроенные устройства.
Ваш файл /etc/network/interfaces
настраивает только адаптер lo
и адаптер eth0
. Вы не настраиваете другие устройства(eth1
и т. д. )во время загрузки, поэтому, пока они там, ничто не подключило их к сети и не активировало. (если вы ничего не сделали в файле под /etc/network/interfaces.d
?)
Предполагая, что в /etc/network/interfaces.d
ничего нет, вы можете настроить /etc/network/interfaces
так, чтобы -eth0 по-прежнему выполнял DHCP и предоставлял шлюз по умолчанию, другие устройства были в своих подсетях без связанного шлюза.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
ifact eth1 inet static
address 192.168.35.101
netmask 255.255.255.0
auto eth2
ifact eth2 inet static
address 192.168.1.33
netmask 255.255.255.0
Обратите внимание, что вы можете сделать то же самое только с 1 сетевой картой и использовать виртуальные интерфейсы
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth0:1
ifact eth0:1 inet static
address 192.168.35.101
netmask 255.255.255.0
auto eth0:2
ifact eth0:2 inet static
address 192.168.1.33
netmask 255.255.255.0
Это должно сработать для вас
cat string.txt| while read -r str; do egrep "^$str *\|" masterFile.list;done
Вы можете использовать следующую awk
программу:
awk -F' *|' 'NR==FNR{searchstr[$1]=1} NR>FNR && ($1 in searchstr) {print}' string.txt masterFile.list
Как видите, вы предоставляете оба файла в качестве аргументов для awk
.
Пока обрабатывается первый файл (, обозначенный FNR
, счетчик на -строк файла -, равный NR
, глобальный счетчик строк ), мы просто регистрируем весь поиск строки (номер поля. 1 каждой строки, поскольку они являются единственными элементами )в массиве searchstr
(, однако в форме индекса массива , поэтому «значение» является просто фиктивным значением1
).
Когда мы приходим к тому, что второй файл(NR
теперь больше, чем FNR
), мы проверяем, содержится ли первый столбец($1
)как индекс массива в searchstr
. Если это так, мы печатаем всю строку.
Идея, стоящая за этим, заключается в том, что awk
имеет удобный синтаксис string in array
, который верен, если string
находится в списке индексов массива array
.
Как заметил Эд Мортон, вы можете «вбить» это в
awk -F' *|' 'NR==FNR{searchstr[$1]; next} $1 in searchstr' string.txt masterFile.list
Вызов searchstr[$1]
определит (, но не заполнит )эту запись массива, а$1 in searchstr
за пределами блока правил будет -, если оценка будетtrue
-инструктировать awk
для печати текущей строки. Инструкция next
в правиле обработки string.txt
гарантирует, что эта часть будет достигнута только для masterFile.list
Обратите внимание, что я указал полное регулярное выражение ( *|
, то есть любое количество пробелов, за которым следует|
)в качестве разделителя полей, чтобы гарантировать, что «первое поле» masterFile.list
действительно является только числом -. ] указание -F'|'
означало бы, что завершающий пробел также включен, и сделал бы процесс сопоставления более сложным. Если «пробелы» на самом деле также могут содержать TAB, используйте вместо этого -F'[[:space:]]*|'
.
несколько вариантов, как указывали другие.
for i in $(cat string.txt); do grep -E "(^$i)" masterFile.txt; done