Puncte:-1

Cum să tăiați o parte a liniei?

drapel in

Trebuie să tai linia într-un anumit moment, vreau să afișez numele GPU-ului, dar numai numele, nimic altceva.

inxi -Gx | grep Dispozitiv care afișează:

Dispozitiv-2: NVIDIA GK107GLM [Quadro K1100M] furnizor: driver Dell: nou

Vreau să arate așa ceva

NVIDIA GK107GLM [Quadro K1100M]

Cum să tăiați asta pentru a afișa numai numele? Există o modalitate de a tipări intervalul, în acest caz de la Word Device la Word vendor.

Bodo avatar
drapel pt
Vă rugăm [editați] întrebarea dvs. și afișați exemplul de ieșire a lui `inxi -Gx | grep Device` și rezultatul așteptat, [formatat ca cod](https://stackoverflow.com/editing-help#code). Această întrebare este despre programarea shell / procesarea textului și nu este legată în mod specific de Ubuntu, așa că s-ar putea să se potrivească mai bine pe https://stackoverflow.com/
pLumo avatar
drapel in
Nu funcționează pentru mine
pLumo avatar
drapel in
Vă mulțumim pentru actualizare, totuși, vă rugăm să verificați și: „*[...] și rezultatul așteptat, [formatat ca cod](https://stackoverflow.com/editing-help#code).*”
Grzegorz Michalak avatar
drapel in
Oferă ieșire: Grafică: Dispozitiv-1 Procesor Intel Core de a patra generație Driver pentru grafică integrată: i915
Puncte:2
drapel cn

Încercați să faceți acest lucru:

inxi -Gx | sed -n 's/.*Dispozitiv-.*: \(.*\) furnizor.*/\1/p'
Grzegorz Michalak avatar
drapel in
Da asta e! Mulțumesc foarte mult. Puteți descrie cum funcționează asta? Această comandă
Apomelitos avatar
drapel cn
Sigur. 1. -n param suprimă imprimarea automată a spațiului modelului (fără ieșire automată de la comanda sed) 2. sed caută acest model `.*Dispozitiv-.*: \(.*\) furnizor.*` 3. `/\1/` - sed înlocuiește toată linia potrivită cu primul grup de potrivire (o parte a modelului între paranteze `(.*\)`) 4. `/p` param la sfârșit imprimă spațiul de model curent (printează liniile potrivite)
Puncte:0
drapel bd

Ceva asemănător cu:

D=$(inxi -Gx | dispozitiv grep)

dacă [[ $D =~ ^Dispozitiv-2:([[:print:]]*)furnizor:([[:print:]]*)driver:([[:print:]]*)$ ]]
atunci
  echo „Dispozitiv găsit: ${BASH_REMATCH[1]}”
altfel
  echo „Nu am găsit dispozitivul”
fi
Grzegorz Michalak avatar
drapel in
Îmi dă eroare ``` eroare de sintaxă: "(" neașteptat (se așteaptă "atunci") ```
Wayne Vosberg avatar
drapel bd
Ce versiune de bash folosești? (`bash --version`)
Grzegorz Michalak avatar
drapel in
5.0.3. ar trebui să funcționeze pe bash mai nou?
Wayne Vosberg avatar
drapel bd
Funcționează cu 5.1.4(1). Privind înapoi la potrivirea regexp jurnalului de modificări și BASE_REMATCH *poate* fi noi începând cu 5.1.
Grzegorz Michalak avatar
drapel in
Nu pot actualiza bash, spune că este cel mai nou posibil :/
bac0n avatar
drapel cn
încercați să adăugați `#!/bin/bash`
Grzegorz Michalak avatar
drapel in
Este pe prima linie a scenariului
bac0n avatar
drapel cn
poate ai ratat punctul și virgulă `]]; apoi`
Wayne Vosberg avatar
drapel bd
Tocmai mi-am dat seama că am un RaspberryPI cu bash 5.0.3(1). Funcționează și acolo. Sunteți sigur că ați introdus corect linia `dacă [[ ... ]]`? Dacă da, încercați să adăugați `set -x` la începutul scriptului - rezultatul poate oferi un indiciu.
Puncte:0
drapel cn
inxi -Gx | grep -oi nv.*]
inxi -Gx | awk '/Dispozitiv/{printează $2,$3,$4,$5}'
Puncte:0
drapel in

inxi -Gx | Dispozitiv grep | cut -d ':' -f 2 | sed 's/ vânzător//'

Acest a tăiaeste rezultatul în câmpuri folosind „:” ca delimitator, apoi vă oferă al doilea câmp. Folosiți sed apoi pentru a elimina cuvântul specific de la sfârșit.

Dacă știți lungimea, puteți tăia o gamă folosind a tăia, vedea omul tăiat pentru detalii.

drapel in
Cred că doar folosirea lui `-G` va elimina partea vânzătorului din șir?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.