В настоящее время нет поддерживаемого способа сделать это с помощью SLE 12. С SLE 15 sp 1 вы можете установить последнюю бета-версию SUSE CaaS Platform 4, которая использует Kubeadm.
Существует также платформа OpenSUSE kubernetes под названием OpenSUSE Kubic, основанная на OpenSUSE Tumbleweed.
grep -v будет работать, просто поменяйте местами источник и цель. -
будет использовать трубу для-f
вместо этого -x
вся строка -w
целое слово рекомендуется игнорировать пробелы из all.txt
cut -d\ -f1 active.txt | grep -vxFf - all.txt
Обратите внимание на два пробела для вырезания :один экранированный пробел в качестве разделителя
отредактируйте :если разделитель является двоеточием, то вместо него нужно обрезать :
cut -d: -f1 active.txt | grep -vwFf - all.txt
Вы можете сделать это с помощью awk
. Проблема в этом случае заключается в том, что в active.txt
за портами сразу следует :
, тогда как в all.txt
они остаются изолированными на линии. Поэтому вам нужно изменить разделитель полей между:
awk -F':' 'FS==":"{ports[$1];next} !($1 in ports)' active.txt FS=" " all.txt
Это будет использовать :
в качестве разделителя полей при чтении списка активных портов (, т. е. при обработке первого файла active.txt
), но установит его на пробел для обработки следующего файла, all.txt
.
active.txt
(, обозначенного FS
, разделителем полей, равным :
, установленному с помощью опции -F
), мы просто регистрируем порты (, т.е. часть перед первый:
)в массиве ports
. Затем выполнение немедленно переходит к следующей строке ввода. all.txt
(FS
теперь пробел, поэтому первый блок действий никогда не вводится ), мы просто проверяем, зарегистрирован ли порт в массиве ports
. Если это не так, условие оценивается как true
, и будет вызвано действие по умолчанию print
.