Фильтрация пути к файлу по нескольким строкам с помощью awk

Это ноутбук Lenovo с переключаемой (Intel )графикой (hostname thinkpad )? Если это так, может помочь, если вы опубликуете свою модель и версию биоса.

Глава 17. Использование драйвера NVIDIA с ноутбуками Optimus

The driver may be installed normally on Optimus systems, but the NVIDIA X driver and the NVIDIA OpenGL driver may not be able to display to the laptop's internal display panel unless a means to connect the panel to the NVIDIA GPU (for example, a hardware multiplexer, or "mux", often controllable by a BIOS setting) is available. On systems without a mux, the NVIDIA GPU can still be useful for offscreen rendering, running CUDA applications, and other uses that don't require driving a display.

У вас подключено 4 монитора (DFP -1, DFP -2, DFP -4, DFP -5, перечисленных в вашемXorg.0.log)? Сколько у вас дисплеев и как их настроить?

Глава 12. Настройка нескольких устройств отображения на одном экране X

If multiple X screens are configured on the GPU, the NVIDIA X driver will attempt to reserve display devices and GPU resources for those other X screens (honoring the "UseDisplayDevice" and "MetaModes" X configuration options of each X screen) and then allocate all remaining resources to the first X screen configured on the GPU.

Если вы собираетесь использовать несколько устройств на одном X-экране (Xinerama отключена с помощью Option "Xinerama" "0"и MetaModesопределены ), пробовали ли вы Option "UseDisplayDevice" "string"в своем xorg.conf? С помощью этой опции вы можете указать устройства (и ), которые будут использоваться для X.

Пример:

Option "UseDisplayDevice" "DFP-2, DFP-3"

Также проверьте правильность ваших MetaModes(или удалите их ). Разве это не должно быть DFP -1, DFP -2, DFP -4, DFP -5 вместо DP -0, HDMI -0, HDMI -1, HDMI -2? Я не уверен, может ли такое быть и откуда берутся эти настройки. Может они и в полном порядке, но в ссылке выше еще и настройки описывают типа "DFP-0: nvidia-auto-select {...}

.

    Option metamodes DP-0: nvidia-auto-select +3000+420, 
    HDMI-0: nvidia-auto-select +4920+420, 
    HDMI-1: nvidia-auto-select +0+0 {rotation=right}, 
    HDMI-2: nvidia-auto-select +1080+420;
   ...
   ...

В вашем лог-файле должна быть строка типа "(II) NVIDIA(0): Display device(s) assigned to X screen 0:", но она отсутствует (, а "Valid display device(s)" присутствует ). См. Приложение C. Отображение имен устройств .

Если у вас несколько мониторов, попробуйте сначала запустить один из них.

0
15.07.2020, 12:14
1 ответ

Я думаю, что есть несколько проблем с вашей оболочкой, а также с вашим awkкодом.

Во-первых, всегда заключайте код awkв одинарные кавычки, как в awk '<commands>'. В противном случае могут возникнуть странные эффекты, такие как оболочка , интерпретирующая операторы $<...>.

Во-вторых, ваш синтаксис выглядит неправильно в нескольких местах:

  • Вы говорите, что ищете первое поле, которое не совпадает, но кажется, что ищете последнее поле? Однако ваш код также будет печатать все другие не соответствующие -поля, поскольку цикл не прерывается после того, как будет найдено первое совпадение.
  • Сравнение регулярных выражений должно выглядеть так:
    if ($i !~ /^(.... )$/) {... }
    
  • В вашем примере кода закрывающая скобка оператора ifотсутствует.

В-третьих, вы также должны удвоить -подстановки команд в кавычках в сценариях оболочки.

Пересмотренный awkкод будет

awk -F '/' '{for (i=NF; i>0; i--) {if ($i !~ /^(NewConfig|[Oo]ld|[Bb]ackup|Servers)$/) {print $i; exit}}}'

А для вызова из скрипта используйте

Filtered_File="$( echo "$File" | awk -F '/' '.... ')"

Обратите внимание, что эта последняя часть будет работать только внутри скрипта из-за конструкции !~. При выполнении в строке команды -по крайней мере bashпопытается выполнить расширение истории команд перед запуском вспомогательной оболочки -, используемой для подстановки команды -, что приводит к сообщению об ошибке.

3
18.03.2021, 23:19

Теги

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