При попытке решить проблемы, подобные этой, Cygwin Package Search - ваш друг. В данном конкретном случае он сообщает, что вам нужно установить libopenssl100
.
Встроенный поиск Cygwin setup.exe
не нашел этого, потому что он ищет только имена файлов пакетов и текст описания. Он не ищет по именам файлов, включенных в пакеты, как это делает вышеупомянутый веб-поисковик. Для этого вам пришлось бы увеличить размер текущего файла setup.ini
с полным указателем имен файлов, что значительно замедлило бы поиск и запуск setup.exe
.
Некоторые пакеты Cygwin лучше справляются с перечислением компонентов пакета в длинном тексте описания, поэтому встроенный поиск иногда выдает такие внутренние сведения о пакете. Однако нет правила, предписывающего делать это.
В целом, это не тот случай, когда в Cygwin есть зависимости, которые вы должны компилировать вручную. Люди, которые контролируют, какие пакеты попадают в Cygwin, не позволят сопровождающему пакета предоставить такой полуразрушенный пакет.
Вы можете найти устаревшие пакеты в Cygwin, но доступные версии, по крайней мере, должны быть согласованными в том смысле, что все части, необходимые для работы программы в собранном виде, присутствуют в репозитории.
Вы можете изменить свою команду, например:
sed 's/user.*Gecko)//g'
Подстрока user.....Gecko)
будет удалена.
Вы можете использовать:
sed -Ee "s/(.*)(user.*Gecko\))(.*)/\1\3/g" filename
Он просто напечатает первое и третье поля и проигнорирует второе поле, которое содержит все между пользователем и Gecko ), включая оба.
Если вы уверены, что user
не является начальным словом, а Gecko)
не последним словом, вы можете использовать:
sed -Ee "s/(.*) (user.*Gecko\)) (.*)/\1 \3/g" filename
этот более точен, так как заменяет только слова, разделенные пробелом.
Я пробовал с помощью приведенной ниже команды, и она работала нормально
awk '{print $1,$2,$NF}' filename
выход
abcd: efgh print
ijkl: mnop second