Puncte:3

Există vreo modalitate prin care pot căuta într-un fișier Uptime care este mai mare de 100 de zile?

drapel kr

Există vreo modalitate prin care pot căuta într-un fișier Uptime care este mai mare de 100 de zile prin comenzile Linux Bash?

De exemplu, fisier1 contine:

Timpul de funcționare este de 172 de zile

Timpul de funcționare este de 562 de zile

Timpul de funcționare este de 30 de zile

timpul de oprire este de 197 de zile

Ce comandă pot folosi pentru a obține o ieșire ca:

Timpul de funcționare este de 172 de zile

Timpul de funcționare este de 562 de zile
user535733 avatar
drapel cn
Aceasta pare a fi o întrebare pentru acasă.
Puncte:6
drapel cn

Iată un simplu awk soluţie:

awk „$1 == „Uptime” && $3 > 100 {print}” fișier1
Timpul de funcționare este de 172 de zile
Timpul de funcționare este de 562 de zile
Raffa avatar
drapel jp
Ar putea fi și mai simplu `awk '/Uptime/ && $3 > 100' file1`
Puncte:5
drapel cn

...si ceva mai complex bash soluţie:

în timp ce se citește -r a b c d; do
   [[ $a = Timp de funcționare && $c -gt 100 ]] && printf „%s %s %s %s\n” $a $b $c $d
terminat < uptime
Timpul de funcționare este de 172 de zile
Timpul de funcționare este de 562 de zile
Puncte:4
drapel it

Și a grep soluție, folosind Extended Regexps:

grep -E „Timpul de funcționare este [[:digit:]]{3}” | \
  grep -Ev „Timpul de funcționare este de 100”

Acesta va găsi șirul „Uptime is”, urmat de cel puțin 3 cifre și va elimina exact 100 urmat de Sfârșit de linie.

David Foerster avatar
drapel us
Utilizați mai bine `[[:digit:]]{3,}` (rețineți virgula) pentru numerele cu mai mult de 3 cifre. Dacă sunt posibile zerouri de început, se poate folosi `0*[1-9][0-9]{2,}` pentru a nu le include în numărare.
marcelm avatar
drapel cn
@DavidFoerster Expresia din răspuns va funcționa, deoarece nu este ancorată în niciun fel până la sfârșit. Pentru o linie cu, să zicem, patru cifre, expresia se va potrivi numai cu primele trei cifre, dar din moment ce expresia se termină acolo, aceasta se va potrivi cu linia. Dar sunt de acord că expresia ta este un stil mai bun; exprimă mai bine intenția și este mai probabil să continue să funcționeze dacă expresia este modificată.
drapel vn
Nu s-ar potrivi și cu timpii de funcționare de 100 de zile, în timp ce întrebarea solicită timpi de funcționare de peste 100?
Puncte:2
drapel id

Conversia din comentariul meu.

Folosind grep și awk împreună:

grep „Uptime” fișier1 | awk „$3 > 100 {print}”

Căutați „Uptime” în fisier1 și apoi uitați-vă la a treia coloană și imprimați dacă este mai mare de 100.

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.