Как отрезать часть строки?

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

inxi -Gx | grep Отображение устройства:

Device-2: NVIDIA GK107GLM [Quadro K1100M] vendor: Dell driver: nouveau

Я хочу, чтобы отображалось что-то вроде этого

NVIDIA GK107GLM [Quadro K1100M]

Как вырезать это, чтобы отображалось только имя? Есть ли способ распечатать диапазон, в данном случае от слова Device до слова vendor.

0
задан 23 July 2021 в 11:28

4 ответа

Попробуйте сделать это так:

inxi -Gx | sed -n 's/.*Device-.*: \(.*\) vendor.*/\1/p'
2
ответ дан 28 July 2021 в 11:15

inxi -Gx | grep Device | cut -d ':' -f 2 | sed 's/ vendor//'

Это cutразбивает вывод на поля, используя ":" в качестве разделителя, затем выдает второе поле. Используйте sed, чтобы убрать конкретное слово с конца.

Если вам известна длина, вы можете вырезать диапазон с помощью cut, подробности см. в man cut.

0
ответ дан 28 July 2021 в 11:15
inxi -Gx | grep -oi nv.*]
inxi -Gx | awk '/Device/{print $2,$3,$4,$5}'
0
ответ дан 28 July 2021 в 11:15

Что-то вроде:

D=$(inxi -Gx | grep Device)

if [[ $D =~ ^Device-2:([[:print:]]*)vendor:([[:print:]]*)driver:([[:print:]]*)$ ]]
then
  echo "Found Device: ${BASH_REMATCH[1]}"
else
  echo "Did not find device"
fi
0
ответ дан 28 July 2021 в 11:15

Другие вопросы по тегам:

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