Si no le importa agregar GNU datamash a la mezcla, simplemente puede serializar las entradas y luego cruzarlas:
awk '
{for (i=2;i<=NF;i++) {split($i,a,"#"); print $1,a[1],a[2]}}' OFS='\t' file |
datamash --filler=0 crosstab 1,2 count 3
Acou Agly Bla Elfa Flq
Item_A: 1 0 1 0 0
Item_B: 1 0 0 1 1
Item_C: 1 0 1 1 1
Item_D: 0 1 1 1 0
Alternativamente, con GNU awk (que permite arreglos multidimensionales):
gawk '
BEGIN {
OFS="\t";
PROCINFO["sorted_in"] = "@ind_str_asc";
}
{
for (i=2;i<=NF;i++) {
split($i,a,"#");
h[a[1]] = 1;
t[$1][a[1]] += a[2];
}
}
END {
for (j in h) printf("\t%s", j);
printf "\n";
for (i in t) {
printf("%s",i);
for (j in h)
printf("\t%d", j in t[i] ? t[i][j] : 0);
printf "\n";
}
}' file
Acou Agly Bla Elfa Flq
Item_A: 1 0 5 0 0
Item_B: 1 0 0 2 2
Item_C: 1 0 4 2 2
Item_D: 0 3 4 2 0
Вы можете повлиять на глобальную среду systemd для всех будущих команд (до перезагрузки )с помощью
sudo systemctl set-environment var=value
или если вы уже экспортировали var
в свою среду, вы можете использовать
sudo systemctl import-environment var
После запуска устройства вы можете удалить переменную с помощью unset-environment
аналогичным образом.
Поскольку это глобальный эффект, вам лучше просто записать строку DB_URL=databus.dev.mysite.io:8080
в какой-нибудь файл /some/file
и установить EnvironmentFile=/some/file
в вашем устройстве.
Альтернативный метод заключается в использовании модуля шаблона myunit@.service
, который запускается с помощью systemctl start myunit@'databus.dev.mysite.io:8080'
. Затем вы можете восстановить этот параметр как %i
внутри устройства, например, в секции [Service]
со строкой типа:
Environment=DB_URL=%i
Как бы то ни было, 50 -systemd -user.sh из самой systemd предоставляет способ импортировать переменные среды DISPLAY и XAUTHORITY, на которые вы можете ссылаться:
#!/bin/sh
systemctl --user import-environment DISPLAY XAUTHORITY
if command -v dbus-update-activation-environment >/dev/null 2>&1; then
dbus-update-activation-environment DISPLAY XAUTHORITY
fi
https://github.com/systemd/systemd/blob/master/xorg/50-systemd-user.sh
В случае, если в вашем текущем терминале установлены переменные окружения и вы просто экспортируете их в systemctl
с помощью sudo
, вы можете использовать
sudo -E systemctl import-environment <LIST OF ENVIRONMENTS TO BE AVAILABLE FOR SERVICE>