Добавить число повторений в отдельный столбец на основе значений в нескольких столбцах

Похоже, это может быть та же ошибка, которая известна и в Ubuntu:

https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1812693

В этой вики есть предложение по обходному пути:

https://blog.kafaiworks.com/posts/arch-linux-audio-setup-on-msi-gp63/

Обходной путь заключается в редактировании файла /usr/share/pulseaudio/alsa-mixer/paths/analog-output-speaker.confследующим образом:

[Element Headphone]
switch = off
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right

[Element Speaker]
required-any = any
switch = mute
volume = off

, а затем для перезапуска pulseaudio (в Debian 10 это реализовано как systemdдля каждой пользовательской службы -):

systemctl --user restart pulseaudio.service

Если я правильно понимаю обходной путь, похоже, что регуляторы громкости/отключения звука для передних динамиков и наушников каким-то образом неправильно подключены/подключены -.

Инструмент hdajackretaskв пакете alsa-tools-guiтакже может быть полезен :если вы можете найти работающие настройки переопределения для вашей модели ноутбука, вам, вероятно, следует связаться с разработчиками аудиодрайверов для Linux и сообщить о проблеме. выводы, поэтому переопределение может автоматически применяться к этой конкретной модели системы.

MSI GL73, по-видимому, использует тот же звуковой кодек ALC1220, а также нуждается в том же исправлении в маршрутизации звука, что и Clevo P950. В качестве дикого предположения вы можете попробовать добавить файл с именем /etc/modprobe.d/sound-fixup.confсо следующим содержимым:

options snd-hda-intel model=clevo-p950

Затем запустите update-initramfs -uот имени пользователя root, чтобы убедиться, что изменение будет эффективным и при ранней загрузке, затем перезагрузите компьютер и посмотрите, приведет ли оно к улучшению. Если MSI подключила вашу модель так же, как GL73, это может исправить ситуацию. Если нет, удалите файл /etc/modprobe.d/sound-fixup.confи снова запустите update-initramfs -u, чтобы полностью избавиться от опции.

1
16.11.2021, 02:35
2 ответа

Вам нужно было сообщить awk, что такое разделитель полей:

awk -F'|' -v OFS='|' '{ print $0, ++count[$1,$2,$3] }' infile

с помощью -Fмы определили разделитель полей ввода, а с помощью -v OFSопределили разделитель полей вывода; вместо этого мы могли бы использовать BEGIN{ FS=OFS="|" }для обоих, например:

awk 'BEGIN{ FS=OFS="|" } { print $0, ++count[$1,$2,$3] }' infile
1
16.11.2021, 03:26

Использование Raku (, ранее известного как Perl _6)

raku -ne ' state %seen; print($_, "|"); for $_.split("|").[0..2].join() { (++%seen{$_}).put };'

ИЛИ

raku -ne ' state %seen; print($_, "|"); ( ++%seen{$_} ).put for.split("|").[0..2].join;' 

Пример ввода:

123|456365|PASS|566563|Apple
123|456365|FAIL|34322|Apple1
123|456365|FAIL|35322|Apple2
123|456335|PASS|56655|Apple34
123|456335|FAIL|34325|Apple53
123|34343|PASS|35323|Apple1
123|34343|PASS|34342|Apple13
123|34343|PASS|343442|Apple13

Пример вывода:

123|456365|PASS|566563|Apple|1
123|456365|FAIL|34322|Apple1|1
123|456365|FAIL|35322|Apple2|2
123|456335|PASS|56655|Apple34|1
123|456335|FAIL|34325|Apple53|1
123|34343|PASS|35323|Apple1|1
123|34343|PASS|34342|Apple13|2
123|34343|PASS|343442|Apple13|3

Выше приведены решения, написанные на Raku, члене семейства языков программирования Perl -. Вкратце, rakuзапускается в командной строке с флагами-ne(строки -, без -автоматической печати ). Хэш %seen— этоstate-d в начале одной строки -. Это позволяет инициализировать %seenровно один раз. Во втором утверждении исходная строка, за которой следует |, — этоprint-ed (без новой строки ). Затем в третьем операторе первые три столбца — это splitна |и повторно-join-ed, и каждое полученное значение ++%seen{$_}используется для увеличения хэша %seenна основе его уникального строкового значения. Увеличенное значение равно putдля завершения решения.

https://raku.org

1
17.11.2021, 06:14

Теги

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