Puncte:0

Extragerea valorilor mai mari decât un prag din fișierul text?

drapel in

Am un fișier text de date după cum urmează:

date=

arht -0,0006 0,0001 0,0147 100,0 100,0
arht -0,0006 0,0006 0,0133 100,0 100,0
bcmd -0,0016 0,0010 0,0168 100,0 100,0
bcmd -0,1012 0,0010 0,0184 100,0 100,0
bcmd 0,2011 0,0024 0,0126 100,0 100,0
.
.
.

Trebuie să extrag liniile care sunt mai mari de 0,10 și -0,10 pentru 2, 3 și 4 coloane. Pentru exemplul de mai sus, 2, 3 și 4 coloane din ultimele două rânduri includ valori mai mari de 0,10 și -0,10. Apoi, fișierul de ieșire ar trebui să fie:

ieșire:

bcmd -0,1012 0,0010 0,0184 100,0 100,0
bcmd 0,2011 0,0024 0,0126 100,0 100,0
elmclose avatar
drapel cn
awk 'sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 {print}' fișier.txt înlocuiți fișierul.txt cu fișierul dvs. de date.
deepblue avatar
drapel in
Dragă @elmclose, dacă poți răspunde la această întrebare, o voi accepta. Soluția ta funcționează bine. Mulțumesc foarte mult.
Puncte:1
drapel cn

În awk, acțiunea implicită atunci când o expresie este evaluată la adevărat este să tipăriți linia curentă. Deoarece trebuie să verificați valoarea absolută a numărului, ignorând semnul, un truc ușor (menționat de utilizator elmclose într-o cometariu) este de a verifica dacă rădăcina pătrată a numărului însuși (care va returna numărul ca număr întreg pozitiv) este mai mare decât pragul. Deci ai putea face pur și simplu:

$ awk 'sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1' fișier
bcmd -0,1012 0,0010 0,0184 100,0 100,0
bcmd 0,2011 0,0024 0,0126 100,0 100,0
Puncte:0
drapel cn

De asemenea, puteți utiliza o funcție din awk pentru a verifica validitatea intervalului.

awk 'funcție fg(v) {return v<=-.1 || v>=.1 ? 1 : 0} (fg($2)+fg($3)+fg($4)){printare}' mkl.txt 

sau mai simplu:

awk 'funcție fg(v) {return v<=-.1 || v>=.1 ? 1 : 0} fg($2)+fg($3)+fg($4)' mkl.txt 

Puteți defini orice limite de interval prin editarea .1 și -.1

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.