Почему не удается установить Wine на Debian 9?

Я использовал awk, который обрабатывает несколько файлов одновременно:

sed 's/,R[1-9]\+\.csv:/,/g' <(awk -v HEADER="$(printf ",%s:" R{1..3}.csv)" -F, '
    { seen[$1]=seen[$1]","FILENAME":"$2; }
    END { print HEADER; for (x in seen) print x seen[x]}' R{1..3}.csv \
|awk -F, 'NR==1{split($0,arr,/,/);next} {SEP=""; fld=1;
    for (x in arr){printf ($0 ~ arr[x])?SEP""$(fld++):",0";SEP=","};print ""}')

Выход:

A,1,0,1
B,20,0,4
C,30,1,0
D,0,13,0
E,0,15,2
F,0,19,0
G,0,0,6
H,0,0,8

Разрыв кода -вниз:

awk -F, '{ seen[$1]=seen[$1]","FILENAME":"$2; }
    END{ print HEADER; for (x in seen) print x seen[x] }' R{1..3}.csv

Основная часть кода, объединяющая все вторые столбцы во всех файлах в один, печатает значение, принадлежащее файлу, имеющему такой же первый столбец. Здесь seen— это имя массива с ключом в качестве первого столбца и значением с ,FILENAME:$2в режиме добавления.

В seen[$1]=seen[$1]","FILENAME":"$2;означает печать запятой ,, за которой следует текущий файл обработки FILENAMEс awk , двоеточие :, за которым следует значение второго столбца $2, если он имеет тот же первый столбец seen[$1]=...и добавьте в тот же ключевой индекс =seen[$1]...и сохраните в том же значении ключа.

Оператор END, awk , выполняющий этот блок в конце, когда все записи/строки прочитаны, и мы использовали цикл for -для перебора массива , видимого и Сначала напечатайте ключ , а затем значение ключа .

Будет результатом:

A,R1.csv:1,R3.csv:1
B,R1.csv:20,R3.csv:4
C,R1.csv:30,R2.csv:1
D,R2.csv:13
E,R2.csv:15,R3.csv:2
F,R2.csv:19
G,R3.csv:6
H,R3.csv:8

Хорошо, теперь мы знаем, что исходящие значения взяты из файлов, а в каких файлах этих данных нет. Для этого, чтобы заполнить данные не -существующих файлов с помощью 0, я использовал подстановку команд оболочкидля создания строки заголовка, объединяющей все имена файлов , и передал в awk какHEADER-v переменная:

awk -v HEADER="$(printf ",%s:" R{1..3}.csv)"...

позже мы воспользуемся этой строкой HEADERи заполним данные пропущенных файлов строкой 0. Теперь наш ввод имеет такой формат:

$ awk -v HEADER="$(printf ",%s:" R{1..3}.csv)" -F, '
    { seen[$1]=seen[$1]","FILENAME":"$2; }
    END { print HEADER; for (x in seen) print x seen[x]}' R{1..3}.csv 
,R1.csv:,R2.csv:,R3.csv:
A,R1.csv:1,R3.csv:1
B,R1.csv:20,R3.csv:4
C,R1.csv:30,R2.csv:1
D,R2.csv:13
E,R2.csv:15,R3.csv:2
F,R2.csv:19
G,R3.csv:6
H,R3.csv:8

Затем я использовал другой приведенный ниже awk скрипт, чтобы заполнить данные не -исходящих файлов 0, которые я скопировал из моего другого ответа на вопрос «Форматирование и заполнение пропущенных данных на основе колонны» .

... |awk -F, 'NR==1{split($0,arr,/,/);next} {SEP=""; fld=1;
    for (x in arr){printf ($0 ~ arr[x])?SEP""$(fld++):",0";SEP=","};print ""}'

В конце концов, sed 's/,R[1-9]\+\.csv:/,/g'используется для замены существующего имени файла в результате одной запятой ,.

1
27.04.2020, 17:07
2 ответа

Репозиторий mainотсутствует в вашем sources.list (отсутствуют зависимости, доступные в репозитории main).

Отредактируйте /etc/apt/sources.listследующим образом:

deb http://deb.debian.org/debian stretch main
deb-src http://deb.debian.org/debian stretch main

deb http://deb.debian.org/debian-security/ stretch/updates main
deb-src http://deb.debian.org/debian-security/ stretch/updates main

deb http://deb.debian.org/debian stretch-updates main
deb-src http://deb.debian.org/debian stretch-updates main

deb https://dl.winehq.org/wine-builds/debian/ stretch main

Отключить все репозитории под/etc/apt/sources.list.d/

Затем запустите:

sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt install --install-recommends winehq-stable
2
19.03.2021, 02:26
apt policy libjbig0:i386
apt policy libjbig0:amd64
sudo apt install  wine
0
19.03.2021, 02:26

Теги

Похожие вопросы