Puncte:0

Grep un anumit cuvânt dintr-o linie folosind comenzi grep/awk

drapel sd
lee

Am încercat acest cmd:

# montură | grep -E '\s/dev/shm\s' | awk -F "(" '{print $NF}'

Așteptări:

rw,nosuid,nodev,seclabel

Ce primesc asta:

rw,nosuid,nodev,seclabel)

si am incercat si asta:

montură | grep -E '\s/dev/shm\s' | awk -F "(" '{print $NF}' | cut -c -24
rw,nosuid,nodev,seclabel

Pot obține cuvântul exact, dar în mod implicit există un cuvânt care nu a fost acolo, nu va funcționa, așa că trebuie să elimin acest caracter ) pana la urma stie cineva despre asta? Învață-mă să rezolv asta.

FedKad avatar
drapel cn
Ai încercat: `mount | grep -E '\s/dev/shm\s' | awk -F "[()]" '{print $2}'` ?
drapel sd
lee
multumesc pentru raspuns! Funcționează bine
Puncte:2
drapel cn

Bănuiesc că rezultatul dvs montură | grep comanda este cam asa:

$ montură | grep -E '\s/dev/shm\s'
tmpfs pe /dev/shm tip tmpfs (rw,nosuid,nodev,inode64)

Deci ceea ce vrei (din nou, presupun aici) este textul dintre paranteze pe liniile care conțin /dev/shm. Dacă da, încercați:

$ montură | grep -oP '\s/dev/shm\s.+\(\K[^)]+'
rw,nosuid,nodev,inode64

The -o opțiunea spune grep pentru a imprima doar partea potrivită a liniei și -P permite PCRE (Perl Compatible Regular Expressions) care ne oferă \K pentru „ignora tot ce s-a potrivit până în acest punct”. Deci expresia regulată va căuta /dev/shm înconjurat de spații albe, apoi cât mai multe caractere posibil până la o paranteză de deschidere (.+\(). Totul până aici este acum ignorat din cauza \K și apoi ne potrivim cu cea mai lungă porțiune de non-) personaje ([^)]+).


Dacă chiar trebuie să utilizați awk din anumite motive, nu este nevoie de grep:

$ montură | awk -F'[()]' '/\s\/dev\/shm\s/{printează $(NF-1)}'
rw,nosuid,nodev,inode64
drapel sd
lee
Mulțumesc mult! Funcționează bine.
Puncte:2
drapel cn

găsimnt este de obicei folosit pentru a găsi și afișa detalii precum numele dispozitivelor, monturi sau tipuri de sisteme de fișiere.

findmnt -n --target /dev/shm --output=opțiuni

Activ monturi se gasesc in /proc/monturi și are un număr fix de coloane, ceea ce face ușor de analizat:

în timp ce se citește -r _ a _ b _; do
    [[ $a = /dev/shm ]] && echo $b
terminat < /proc/mounts
drapel sd
lee
Multumesc pentru raspuns! Funcționează bine
terdon avatar
drapel cn
@lee, Dacă unul dintre răspunsurile de aici v-a rezolvat problema, vă rugăm să luați un moment și [acceptați-l](//askubuntu.com/help/someone-answers) făcând clic pe bifa din stânga. Acesta este cel mai bun mod de a vă exprima mulțumirile pe site-urile Stack Exchange.

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.