Puncte:0

comandă grep folosind caractere metalice [0-9]

drapel in
grep ".0000000" date > output

Extrag toate datele numerice care se termină cu .0000000 în fișierul text de date. Când am schimbat acest cod folosind wildcard, după cum urmează:

grep „.[0-9][0-9][0-9][0-9][0-9][0-9][0-9]” date > output

Codul de mai sus ar trebui să extragă toate datele numerice care se termină cu orice șapte cifre după punct, dar nu funcționează așa cum ar trebui să fie. Cum pot modifica codul de mai sus pentru a extrage toate datele numerice care se termină cu orice șapte cifre după punct?

drapel hr
`.` în grep regex se potrivește cu orice caracter - dacă doriți să potriviți un punct (punct) literal, aveți nevoie de `\.` sau `[.]`
drapel ar
@steeldriver comentariul tău arată ca răspunsul! :)
drapel hr
@user68186 poate... nu știu. Descrierea „nu funcționează așa cum ar trebui să fie” este destul de vagă... probabil că cel puțin are nevoie de un fel de graniță sau ancora dacă OP-ul vrea *exact* 7 cifre
deepblue avatar
drapel in
@steeldriver, dacă răspunzi la această întrebare o voi accepta. Soluția ta funcționează.
Puncte:3
drapel hr

Din descrierea dvs. nu este clar dacă expresia dvs. nu reușește să se potrivească cu lucrurile pe care le doriți sau cu lucrurile pe care nu le doriți.

Dacă este cea din urmă, atunci poate fi pentru că . într-o expresie regulată grep se potrivește cu orice caracter (cu excepția caracterului newline - totuși grep este în mod normal bazat pe linii). Pentru a potrivi un punct (punct) literal, trebuie să scapi de el \. sau plasați-l într-un set de caractere așa cum ați făcut pentru intervalele de cifre zecimale:

grep „[.][0-9][0-9][0-9][0-9][0-9][0-9][0-9]”

De asemenea, menționați că expresia ar trebui să se potrivească cu datele „se termină cu” - nu este clar dacă vă referiți la a sfârșit de linie sau a limita de cuvinte - acestea sunt respectiv $ și \b (sau \>) ex.

grep „[.][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$”

grep „[.][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\b”

De asemenea, puteți scurta expresia folosind un cuantificator - trecând la modul expresie regulată extinsă (ERE).1:

grep -E „[.][0-9]{7}$”

1 În GNU grep, puteți utiliza cuantificatori în modul expresie regulată de bază (BRE) prin scăparea acoladelor grep „[.][0-9]\{7\}$”

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.