Основной ответ кажется мне простым:
sed -e "/interface GigabitEthernet0\/3/p" \
-e "/interface GigabitEthernet0\/4/p" \
-e "/interface GigabitEthernet0\/3/,/interface GigabitEthernet0\/4/d" "$@"
Печать строк, соответствующих «interface GigabitEthernet0 / 3», и строк, содержащих «interface GigabitEthernet0 / 4»; удалите строки между двумя и включите их.
Единственная возможная проблема заключается в том, что если есть «interface GigabitEthernet0 / 4» и нет предшествующего «интерфейса GigabitEthernet0 / 3», то эта строка будет удвоена. Если это реальная проблема, перейдите к более сложному сценарию:
sed -e "/interface GigabitEthernet0\/3/,/interface GigabitEthernet0\/4/{
/interface GigabitEthernet0\/3/p
/interface GigabitEthernet0\/4/p
d
}" "$@"
Если вы непреклонны, это должна быть одна строка, используйте точки с запятой, но результат будет неразборчивым.