Puncte:0

Analizați pur și simplu coloana din rezultatul comenzii bash

drapel ng

Trebuie să extragem coloana din rezultatul comenzii. Am încercat metodele folosind comenzile awk și cut. În timp ce avem spațiile în valorile coloanei a doua, din cauza cărora delimitatorul pentru spațiu sau alt caracter nu analizează rezultatul coloanei a doua într-un mod corect. Avem altă metodă pentru a obține doar a doua coloană a rezultatului, așa cum s-a menționat mai sus?

# cat info.txt
Fișier cu nume Vmid                                 
369 DO-NOT-DELL [datastore1] DO-NOT-DELL/NU-DELL.vmx                                
389 VMware vCenter Server [datastore1] VMware vCenter Server/VMware vCenter Server.vmx            
390 Auth-vcenter-Nu șterge [datastore1] Auth-vcenter-Nu șterge/Auth-vcenter-Nu șterge.vmx    
393 VirtualMachine [datastore1] VirtualMachine/VirtualMachine.vmx                                            
9 Server 2005 pentru VM (echipă de dezvoltare) [datastore1] Server 2005 pentru VM (echipă de dezvoltare)      

# cat info.txt | awk „{printează $2}”
NU-DELL
VMware
Auth-vcenter-Nu
Mașină virtuală
Server

Ca și în rezultatul de mai sus a unei a doua coloane, nu avem valoarea completă așa cum este în fișierul original.

Puncte:4
drapel us

Este posibil să se analizeze coloane cu lățime fixă ​​cu GNU awk:

Împărțirea unei înregistrări de intrare în câmpuri cu lățime fixă ​​este specificată prin alocarea unui șir care conține numere separate prin spațiu variabilei încorporate LĂȚIMILE CÂMPULUI. Fiecare număr specifică lățimea câmpului, inclusiv coloanele dintre câmpuri. Dacă doriți să ignorați coloanele dintre câmpuri, puteți specifica lățimea ca un câmp separat care este ulterior ignorat.

% awk -v FIELDWIDTHS="7 37 *" '{print $2}' foo
   Nume                              
NU-DELL                          
Server VMware vCenter                
Auth-vcenter-Nu șterge            
Mașină virtuală                       
Server 2005 pentru VM (echipă de dezvoltare)        

De asemenea, puteți utiliza o expresie regulată ca separator de câmp pentru a împărți textul, deci, de exemplu, folosind 3 sau mai multe spații ca FS:

% awk -F ' {3,}' '{print $2}' foo
Nume
NU-DELL
Server VMware vCenter
Auth-vcenter-Nu șterge
Mașină virtuală
Server 2005 pentru VM (echipă de dezvoltare)
cybermizz avatar
drapel ng
Multumesc frumos @muru
bac0n avatar
drapel cn
`'NR>1 {print $2}'`, omite antetul.
Puncte:1
drapel cn

Convertiți spațiile în file cu poziții de oprire a tabulatorului care nu sunt implicite:

unexpand -t 7,44 info.txt | taie -f2
elmclose avatar
drapel cn
Soluție excelentă. Am învățat ceva nou: unexpand
Puncte:1
drapel ng

De asemenea, am găsit o abordare bună de la unul dintre prietenii mei pentru a obține lista mașinilor virtuale.

# cat info.txt | tr -s " " | cut -d "[" -f1 | cut -d " " -f2- | coada -n +2

                        
NU-DELL                          
Server VMware vCenter                
Auth-vcenter-Nu șterge            
Mașină virtuală                       
Server 2005 pentru VM (echipă de dezvoltare)  
Puncte:0
drapel cn

Mai multe spații între „coloane” pot fi folosite ca separator de câmp awk. Acest lucru se poate face prin regex ca [ ]{2,}

$ awk -F"[ ]{2,}" "{printare $1}"
Vmid
369
389
390
393
9

$ awk -F"[ ]{2,}" '{printează $2}'
Nume
NU-DELL
Server VMware vCenter
Auth-vcenter-Nu șterge
Mașină virtuală
Server 2005 pentru VM (echipă de dezvoltare)

$ awk -F"[ ]{2,}" "{printare $3}"
Fişier
[datastore1] NU-DELL/NU-DELL.vmx
[datastore1] VMware vCenter Server/VMware vCenter Server.vmx
[datastore1] Auth-vcenter-Nu șterge/Auth-vcenter-Nu șterge.vmx
[datastore1] VirtualMachine/VirtualMachine.vmx
[datastore1] Server 2005 pentru VM (echipă de dezvoltare)
terdon avatar
drapel cn
`Rev info.txt | awk '{$NF=""; printeaza $0}' | rev | sed 's/\[/SEP\[/g' | awk 'BEGIN{FS="SEP"} {print $1}'` va imprima `Name File` ca prima linie. Ceilalți par să producă altceva decât ceea ce a cerut OP.

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.