Puncte:1

Extragerea informațiilor specifice din fișier

drapel cn

Am un fișier creat dintr-o comandă pe care o rulez pe sistemul meu. După ce fișierul este creat, vreau să extrag doar informații specifice din acel fișier, dar numai acesta îndeplinește anumite criterii.

Iată cum arată fișierul meu:

client: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        versiune: xxxx
        uuid: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        user-uid: 10000
        utilizator: un utilizator
        server primar: xxx.xxx.xxx.xxx
        mod de operare: normal
        mac: XX:XX:XX:XX:XX:XX
        timp blocat: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        Nume gazdă: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        conexiune-1: frdp::Verde::Test
        conexiune-0: frdp::Violet::Test
client: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        versiune: xxxx
        uuid: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        user-uid: 10000
        utilizator: un utilizator
        server primar: xxx.xxx.xxx.xxx
        mod de operare: normal
        mac: XX:XX:XX:XX:XX:XX
        timp blocat: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        Nume gazdă: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        conexiune-0: frdp::Violet::Test
client: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        versiune: xxxx
        uuid: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        user-uid: 10000
        utilizator: un utilizator
        server primar: xxx.xxx.xxx.xxx
        mod de operare: normal
        mac: XX:XX:XX:XX:XX:XX
        timp blocat: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        Nume gazdă: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
client: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        versiune: xxxx
        uuid: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        user-uid: 10000
        utilizator: un utilizator
        server primar: xxx.xxx.xxx.xxx
        mod de operare: normal
        mac: XX:XX:XX:XX:XX:XX
        timp blocat: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        Nume gazdă: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        conexiune-0: frdp::Violet::Test
client: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        versiune: xxxx
        uuid: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        user-uid: 10000
        utilizator: un utilizator
        server primar: xxx.xxx.xxx.xxx
        mod de operare: normal
        mac: XX:XX:XX:XX:XX:XX
        timp blocat: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        Nume gazdă: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
client: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        versiune: xxxx
        uuid: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        user-uid: 10000
        utilizator: un utilizator
        server primar: xxx.xxx.xxx.xxx
        mod de operare: normal
        mac: XX:XX:XX:XX:XX:XX
        timp blocat: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        Nume gazdă: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        conexiune-0: frdp::Violet::Test
client: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        versiune: xxxx
        uuid: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        user-uid: 10000
        utilizator: un utilizator
        server primar: xxx.xxx.xxx.xxx
        mod de operare: normal
        mac: XX:XX:XX:XX:XX:XX
        timp blocat: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        Nume gazdă: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        conexiune-0: frdp::Verde::Test
client: tc-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        versiune: xxxx
        uuid: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        user-uid: 10000
        utilizator: un utilizator
        server primar: xxx.xxx.xxx.xxx
        mod de operare: normal
        mac: XX:XX:XX:XX:XX:XX
        timp blocat: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        Nume gazdă: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        conexiune-1: frdp::Verde::Test
        conexiune-0: frdp::Violet::Test

Vreau să extrag doar numele de gazdă client care arată doar o conexiune la Purple și clienții fără conexiuni într-un fișier nou. Am reușit să sparg doar nume de gazdă sau conexiuni folosind awk, dar nu unele specifice fără o conexiune.

EDITARE: Am adăugat intrări în fișier.

James S. avatar
drapel de
Controlați generarea acestui fișier? Adică, aceasta este rezultatul unui program pe care l-ați scris? Mai general, ce comandă generează această ieșire? de ce este aceasta o întrebare despre Ubuntu?
drapel cn
Comanda care generează lista este proprietară și sistemul rulează pe Ubuntu. Fișierul este generat prin rularea comenzii și redirecționarea ieșirii într-un fișier. Acesta este formatul după executarea comenzii.
James S. avatar
drapel de
O mulțime de aplicații rulează „pe deasupra Ubuntu”, dar suportul acestor aplicații nu este în mod corespunzător o întrebare *despre* Ubuntu. Puneți o întrebare generală de procesare a textului și există câteva mii de moduri de a analiza acel fișier. S-ar putea să încercați să întrebați în stackexchange mai general Unix și Linux.
drapel cn
Mulțumesc pentru ajutor. Voi face asta.
Puncte:0
drapel cn

Fișierul dvs. de intrare este prea scurt pentru a înțelege exact ce doriți. Dar poți încerca asta ca început:

awk '/hostname|Mov/' fișierul meu
drapel cn
Ultimul client este unul care nu are o conexiune activă. Deci ultima intrare este mai scurtă. Trebuie să-l atrag și pe acel client în noua mea listă.
drapel cn
Am reușit să obțin numele de gazdă cu sau fără conexiuni într-o listă. awk -F '\t' 'nume gazdă:/ || /connection/' myfile >> rafinatfile
Puncte:0
drapel jp

Dacă înțeleg corect ce vrei, este să filtrezi clienții cu alte conexiuni decât „Violet” (doar „Verde” în exemplul tău, dar eventual alte culori).

Următoarele comenzi folosesc grep pentru a elimina liniile cu „Violet”, tr a face o singură linie și sed pentru a pune rupturi de linie înainte de „client” și în final grep pentru a elimina liniile rămase cu „conexiune” și pentru a selecta doar informația dorită pentru fiecare client.

Întregul set de informații:

< fișierul meu grep -v „Violet” | tr '\n' ' '| tr -s ' ' ' ' | sed "s/ client/\nclient/g" \
| grep -v „conexiune”

Numele de gazdă și orice este listat în spate:

< fișierul meu grep -v „Violet” | tr '\n' ' '| tr -s ' ' ' ' | sed "s/ client/\nclient/g" \
| grep -v 'conexiune' | grep -o 'nume gazdă:.*'

Doar nume de gazdă, pe care l-ați dorit conform a ceea ce am putut citi:

< fișierul meu grep -v „Violet” | tr '\n' ' '| tr -s ' ' ' ' | sed "s/ client/\nclient/g" \
| grep -v 'conexiune' | grep -o 'nume gazdă: [^ ]*'

Celălalt grup (care ar trebui filtrat) cu nume de gazdă și altă conexiune decât „Violet”:

< fișierul meu grep -v „Violet” | tr '\n' ' '| tr -s ' ' ' ' | sed "s/ client/\nclient/g" \
| grep 'conexiune' | grep -o 'nume gazdă:.*'

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.