Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Care este cel mai bun mod de a pr...

Recomandare centrala termica apar...

samsung Xcover 5 Nu mai vrea

Telefon de budget pentru filme 10...
 Recomandare serviciu / firma recu...

La mulți ani @Piniuli!

Pret inghetata corso kaufland?

La multi ani @Constantin si Elena...
 La mulți ani @Ion_Bumbu!

Obiecte vechi și inutile car...

Mentenanta Acoperis

Cheder deteriorat , zgariat, cum ...
 Laptop HP 15-AF001NQ, AMD E1-6015...

Blat de bucatarie lungime 4,60 m

Termostat incalzire si racire

Configurare retea cu modem Vodafo...
 

awk script - cel mai mare numar

- - - - -
  • Please log in to reply
7 replies to this topic

#1
sorin86

sorin86

    Member

  • Grup: Members
  • Posts: 797
  • Înscris: 16.12.2012
Salut,

Am si eu o mica necunoscuta intr-un script:

Am un fisier.txt cu cateva numere si data curenta: ex.

fisier.txt

102   2015-12-01 00:00
123   2015-12-01 00:01
454   2015-12-01 00:02
22     2015-12-01 00:03
3       2015-12-01 00:04
5466 2015-12-01 00:05


Si vreau sa imi afiseze linia cu cel mai mare numar plus ora 00:05.

awk 'BEGIN {max = 0} {if ($1>max) max=$1} END {print max}' fisier.txt


Dar imi afiseaza doar 5466 nu si 00:05

#2
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
Salveaza linia care contine maximul.
Asta tine de programare, nu de awk.

#3
sorin86

sorin86

    Member

  • Grup: Members
  • Posts: 797
  • Înscris: 16.12.2012
M-ai lamurit de tot ... cum fac asta?

#4
mufa

mufa

    Porc misogin

  • Grup: Super Moderators
  • Posts: 40,804
  • Înscris: 13.01.2005
$ cat test.txt
102   2015-12-01 00:00
123   2015-12-01 00:01
454   2015-12-01 00:02
22 2015-12-01 00:03
3    2015-12-01 00:04
5466 2015-12-01 00:05

$ awk 'BEGIN {max = 0} {if ($1>max) max=$1} END {print max,$NF}' test.txt
5466 00:05

#5
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
@mufa. Scriptul tau afiseaza ora de pe ultima linie. In cazul de fata este doar o intamplare.
@OP. Uite un exemplu de cum sa salvezi toata linia si care este conform cu o parte din cerinta. Vezi comentariile despre cerinta mai jos.
awk 'BEGIN{max=0}{if($1>max){max=$1;text=$0}}END{print text}'


In schimb cerinta este ambigua:

Quote

Si vreau sa imi afiseze linia cu cel mai mare numar plus ora 00:05.
.

Cand zici linia, te referi la toata informatia de pe linie.
In schimb din exemplul tau se intelege cu totul alta cerinta.
Intai trebuie sa decizi ce vrei.

#6
mufa

mufa

    Porc misogin

  • Grup: Super Moderators
  • Posts: 40,804
  • Înscris: 13.01.2005

View PostCy_Cristian, on 03 decembrie 2015 - 09:31, said:

@mufa. Scriptul tau afiseaza ora de pe ultima linie. In cazul de fata este doar o intamplare.
Știu.

#7
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Eu aș sorta fișierul și aș afișa ultima (sau prima) linie. Fără awk.

#8
sorin86

sorin86

    Member

  • Grup: Members
  • Posts: 797
  • Înscris: 16.12.2012
Ms mult @Cy_Cristian, merge perfect scriptul. Eu am gasit si ceva de genu' :

awk '$1 > max { max = $1; output = $2 } END { print max,output }' file.txt

Cheers pentru raspunsuri.:D

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate