Если вам нужен результат grep
, вы не можете использовать флаг -c
, как указано в другом ответе. Что вы можете сделать, так это запустить дважды, один раз с флагом -c
, чтобы получить количество совпадений, и один раз без флага -c
, чтобы увидеть совпадения. Однако это может быть очень неэффективно, в зависимости от размера вашего входного файла.
Вы можете сделать что-то вроде этого:
Содержимое ввода :
The first line is foo
I have a drink at the bar
The third line is foo again
Содержимое скрипта :
#!/usr/bin/env bash
countMatches(){
echo Searching for "${1}"
result=$(grep "${1}" input)
if [ $? -eq 1 ]; then
echo No match found
echo
exit 1
fi
if [ $(echo "${result}" | wc -l) -eq 1 ]; then
echo 1 match found:
echo "${result}"
echo
else
echo 2 matches found:
echo "${result}"
echo
fi
}
countMatches foo
countMatches bar
countMatches baz
А вот вывод при вызове скрипта :
Searching for foo
2 matches found:
The first line is foo
The third line is foo again
Searching for bar
1 match found:
I have a drink at the bar
Searching for baz
No match found
Последние несколько дней я разрабатывал аналогичную конфигурацию.
На момент написания этой статьи в systemd -networkd была ошибка, из-за которой он не помещал делегированный адрес префикса -в интерфейс, раздающий префиксы. Однако интерфейс выдает префиксы устройствам в сетевом сегменте.
IPv6-адрес вашего внешнего интерфейса не соответствует префиксу из-за конфигурации сети вашего интернет-провайдера. Мой интернет-провайдер выдает два разных блока адресов DHCPv6, один из них совпадает с префиксом, указанным для делегирования, а другой — нет. Он изменяется случайным образом по истечении срока аренды DHCPv6.
Конфигурация, которую я использовал, взята из Archlinux Wiki Сначала вы настраиваете свой «внешний» интерфейс (, который подключен к Fritz!box )
./etc/systemd/network/EXTERNAL.network
[Match]
...
[Network]
DHCP=yes
IPForward=yes
IPv6AcceptRA=yes
IPv6DuplicateAddressDetection=1
IPv6PrivacyExtensions=kernel
Код, который у вас уже есть для eth1, выглядит правильно (при условии, что eth1 является вашим внешним интерфейсом ). В моей конфигурации я включил клиенты DHCPv4 и DHCPv6 на своем интерфейсе.
Теперь ваш внутренний интерфейс должен быть настроен так:
/etc/systemd/network/INTERNAL.network
[Match]
...
[Network]
IPv6PrefixDelegation=dhcpv6
IPv6DuplicateAddressDetection=1
IPv6PrivacyExtensions=no
LinkLocalAddressing=ipv6
[IPv6PrefixDelegation]
RouterLifetimeSec=3600
Параметр RouterLifetimeSec
важен, потому что он настраивает интерфейс для выдачи префиксов, которые он получает от интерфейса DHCPv6.