find directoryname -type f -exec grep -l {} {} \;
Это говорит найти
для поиска простых файлов (т.е. исключая каталоги, устройства, символические ссылки и т.д.) и для каждого найденного файла выполнить grep
с заданными параметрами. -l
поручает grep просто показать имя файла, а не совпадающую строку. {}
означает имя файла, \;
отменяет команду.
Конечно, вы, вероятно, имели в виду, что нужно искать само имя файла, а не путь. Это означает, что часть каталога должна быть удалена из первой части {}
. Одним из решений может быть:
find directoryname -type f -exec sh -c 'grep -l $(basename {}) {}' \;
Для каждого файла теперь запускается оболочка, так как подстановка параметров с $( ... )
должна быть выполнена. basename
strips off any leading directory part.
Обратите внимание, что необходимо использовать одинарные кавычки, иначе $( ... ) часть будет вычислена при вводе команды, а не при запуске оболочки с помощью find.
Я бы использовал awk для этого
awk '/^-config2/ {print $2}' file
, он печатает второй аргумент строк, начиная с -Config2
. ^
означает начало линии.
Попробуйте это:
perl -ne 'if (/-config2\s*(.*)/) { print "$1\n"; }'
Это ищет линии, соответствующие -config2
, а затем печатает остальную часть
строка (\s*
) соответствует произвольному количеству белого пробела, (.*)
.
совпадает с чем угодно и привязывает его к $1
).
Мой предыдущий ответ, в котором предполагалось, что за -config2
следует a
единственное слово:
perl -ne 'if (/-config2\s*(\S+)/) { print "$1\n"; }'
Это ищет строки, соответствующие -config2
, а затем выводит на печать первые
токен после него (\s*
совпадает с произвольным количеством пробела, (\S+)
совпадает с непустой последовательностью не белых символов и связывает ее с $1
).
можно настроить NAT для каждого гостя в частной сети. Во-первых, необходимо прекратить объединение всех сетевых интерфейсов (в конце концов, если они все находятся на одном коммутаторе, они едва ли находятся в собственных частных сетях).
Затем вы наборами правила NAT, и может это сработает. Но, наверное, нет - исходящий путь должен работать, а обратный - это проблема. Механизм NAT получает ответный пакет, NAT возвращает его источнику 192.168.0.2 (или что угодно). Затем он передает его маршруту... который посылает его куда? Все гости имеют один и тот же IP-адрес, все их интерфейсы имеют одинаковый адрес/маску подсети.
Поэтому нам нужно исправить маршрутизацию. К счастью, это выполнимо, с маршрутизацией политики.
При добавлении правил -t mangle
для каждого гостя (на основе исходного порта, например, vnet0 или любого другого) можно отметить соединения. Затем можно направить ответ обратно (используя ip rule
) на основе этой метки.
Это большая конфигурация, но как только она заработает, ее можно будет создать. Наверное, получится. Я не проверял его. Будь то вменяемо или нет, ну... Я бы попытался заставить DHCP работать правильно лично. Подумайте о следующем человеке, которому придется управлять этим человеком (который вполне может быть вами через несколько месяцев после того, как вы точно забыли, как это работает)
-121--128788- Это проблема языкового стандарта. watch
использует strtod (3)
, зависящий от языка, для преобразования аргумента в -n
в double
.
Чтобы устранить проблему, необходимо либо указать аргумент -n
с другим разделителем:
watch -n 0,1 w
Или измените языковой стандарт на настройку, в котором символ точки используется для десятичной запятой:
export LC_NUMERIC=en_US.UTF-8
watch -n 0.1 w
Несколько ссылок:
strtod
:Десятичное число состоит из непустой последовательности десятичных цифр, возможно содержащей символ radix (десятичная точка, зависит от языка, обычно '.')
Можно просмотреть текущие настройки, запустив языковой стандарт
на терминале:
языковой стандарт
LANG = en _ US.UTF-8
LC_CTYPE="en_US.UTF-8 "
LC_NUMERIC="en_US.UTF-8 "
LC_TIME="en_US.UTF-8 "
LC_COLLATE="en_US.UTF-8 "
LC_MONETARY="en_US.UTF-8 "
...
Исходный код можно просмотреть по адресу gitlab:
https://gitlab.com/procps-ng/procps/blob/85fff468fa263cdd2ff1c0144579527c32333695/watch.c#L625
https://gitlab.com/procps-ng/procps/blob/85fff468fa263cdd2ff1c0144579527c32333695/lib/strutils.c#L49
(изменить 2017-09-07): обновленные ссылки gitlab
-121--58537-Вариант с sed:
sed -n 's/^-config2 //p' file
-n
подавить автоматическую печать
s/^ -config2//
заменить -config2
и заднее пространство на линии начать с ничего в образец пробел
p
print образца пробел