Мне нужно вырезать строку в определенный момент, я хочу отобразить имя графического процессора, но только имя , ничего больше.
inxi -Gx | grep Отображение устройства:
Device-2: NVIDIA GK107GLM [Quadro K1100M] vendor: Dell driver: nouveau
Я хочу, чтобы отображалось что-то вроде этого
NVIDIA GK107GLM [Quadro K1100M]
Как вырезать это, чтобы отображалось только имя? Есть ли способ распечатать диапазон, в данном случае от слова Device до слова vendor.
Попробуйте сделать это так:
inxi -Gx | sed -n 's/.*Device-.*: \(.*\) vendor.*/\1/p'
inxi -Gx | grep Device | cut -d ':' -f 2 | sed 's/ vendor//'
Это cut
разбивает вывод на поля, используя ":" в качестве разделителя, затем выдает второе поле. Используйте sed, чтобы убрать конкретное слово с конца.
Если вам известна длина, вы можете вырезать диапазон с помощью cut
, подробности см. в man cut
.
inxi -Gx | grep -oi nv.*]
inxi -Gx | awk '/Device/{print $2,$3,$4,$5}'
Что-то вроде:
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