С awk
не уверен, будет ли он работать на Cygwin
$ awk '{ if(/^alt_id/){$0 = $0" "p} else{p = ""; for (i=2; i<=NF; i++) p = p" "$i} } 1' ip.txt
GO:0000001 mitochondrion inheritance
GO:0000002 mitochondrial genome maintenance
GO:0000003 reproduction
alt_id: GO:0019952 reproduction
alt_id: GO:0050876 reproduction
GO:0000005 obsolete ribosomal chaperone activity
GO:0000006 high-affinity zinc uptake transmembrane transporter activity
GO:0000007 low-affinity zinc ion transmembrane transporter activity
GO:0000008 obsolete thioredoxin
alt_id: GO:0000013 obsolete thioredoxin
GO:0000009 alpha-1,6-mannosyltransferase activity
alt_id
в начале строки, используйте переменную ( p
), чтобы сохранить все столбцы, начиная с двух. alt_id
в начале строки, добавьте содержимое p
в строку ввода, содержащуюся в $ 0
переменная 1
- это ярлык для печати содержимого $ 0
Как объяснил @StephenHarris, проблема заключается в том, что в тот момент, когда systemd пытается прочитать модуль, файл с символической ссылкой еще недоступен
Чтобы systemd просто перезагрузил юниты после монтирования:
[Unit]
Description=reloads units stored in /mnt/data
DefaultDependencies=no
After=mnt-data.mount
Requires=mnt-data.mount
[Service]
Type=oneshot
ExecStart=/bin/systemctl daemon-reload
[Install]
WantedBy=local-fs.target
Это приведет к тому, что юниты станут доступными, потому что на этот раз на этот раз цель символических ссылок смонтирована.
Но к тому времени список заданий, которые необходимо выполнить для достижения default.target , уже сформирован,и служба не будет запущена.
Чтобы он также перезапустил вашу службу:
[Unit]
Description=restart unit stored in /mnt/data
Requires=mnt-data.mount
[Service]
Type=oneshot
ExecStart=/bin/systemctl daemon-reload
ExecStartPost=/bin/systemctl start sprinterd.service
[Install]
WantedBy=multi-user.target
Альтернативы:
ExecStart=
и ExecStartPost=
, но он, очевидно, должен работать с ExecStartPre=
иExecStart=
ExecStart=/bin/systemctl enable /mnt/data/sprinterd.service
вместо демон -перезагрузкаConsistsOf=
или PartOf=
для загрузки всех нескольких служб. local-fs.target
не лучший вариант установки для вас. Для более старой -школы подхода в стиле SysVinit-поместите команды systemctl внутрь /etc/rc.local
и chmod +x
этого файла.
А затем тайно опубликуйте в списке рассылки Devuan, как вам понадобился SysVInit для исправления b0rked SystemD;-)
Это известное ограничение . Жаль, что у меня не было обходного пути для вас.