The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
finna största kataloger i ett filsystem GKnight Shell-programmering och Skript 8 04-30-2008 09:58
Den största dumpa enheten är för liten click007 AIX 4 10-26-2007 06:08
hitta största fil mohan705 Shell-programmering och Skript 15 07-04-2007 03:34
hitta 5o största filer i en katalog igidttam Filsystem, diskar och Minne 8 05-16-2007 02:20
fil av största storleken i pwd rameshparsa Shell-programmering och Skript 4 11-22-2005 12:25

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 03-15-2008
jkl_jkl jkl_jkl is offline
Registered User
  
 

Join Date: Aug 2007
Inlägg: 46
största området, awk, hjälp

Hej Alla,

Mitt ärende är så här:


Kod:
$ cat max.txt
abcd:1982:a
efghij:1980:e
klmn:1923:k
opqrst:1982:o

Jag måste ta reda på den största första fältet och motsvarande linje. dvs

Effekt som krävs:


Kod:
efghij efghij:1980:e
opqrst opqrst:1982:o

HTH,
jkl_jkl
  #2 (permalänk)  
Old 03-15-2008
yunccll yunccll is offline
Registered User
  
 

Join Date: mars 2008
Inlägg: 23
försök den här koden:
Kod:
#!/bin/bash

#constant
INFILE="max.txt"

#core script
awk ' BEGIN { OFS=FS=":"; cur=max=0; seen=""}
        {
           cur = length($1)
           if(cur > max ){
              seen = $1 " " $0
           }
           else if(cur == max){
              seen = seen "\n"  $1 " " $0
           }
        }
        END { print seen }'  $INFILE
#exit normally
exit 0

. Aaron
  #3 (permalänk)  
Old 03-15-2008
jkl_jkl jkl_jkl is offline
Registered User
  
 

Join Date: Aug 2007
Inlägg: 46
Aaron,

Det skrivs bara


Kod:
opqrst opqrst:1982:o

Och inte


Kod:
efghij efghij:1980:e
opqrst opqrst:1982:o

dvs om det finns 2 längsta fält, dess tryckning den sista.
  #4 (permalänk)  
Old 03-15-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2003
Ort: Florida
Inlägg: 1.938
Bara lägga till "max \u003d cur" och båda linjerna är tryckta ut som du vill.


Kod:
awk ' BEGIN { OFS=FS=":"; cur=max=0; seen=""}
        {
           cur = length($1)
           if (cur > max ) {
              seen = $1 " " $0
              max = cur
           } else if (cur == max) {
              seen = seen "\n"  $1 " " $0
           }
        }
        END { print seen }'  $INFILE

  #5 (permalänk)  
Old 03-15-2008
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
  
 

Join Date: februari 2006
Ort: Almería, Spanien
Inlägg: 393
En annan sol:

Kod:
awk '{l=length($1);if(l>=max){a[$1" "$0]=l;max=l}}END{for(i in a)if (a[i]==max)print i}' FS=':' file

  #6 (permalänk)  
Old 03-16-2008
yunccll yunccll is offline
Registered User
  
 

Join Date: mars 2008
Inlägg: 23
Citat:
Ursprungligen postat av jkl_jkl View Post
Aaron,

Det skrivs bara


Kod:
opqrst opqrst:1982:o

Och inte


Kod:
efghij efghij:1980:e
opqrst opqrst:1982:o

dvs om det finns 2 längsta fält, dess tryckning den sista.
Förlåt, jag glömde "max \u003d nuvarande", när jag ingång min kod i svaret!

. Aaron
  #7 (permalänk)  
Old 11-29-2008
bashisthebest bashisthebest is offline
Registered User
  
 

Join Date: Nov 2008
Inlägg: 1
Hur skulle du hitta det lägsta området och motsvarande linje?

Hej Jag undrar hur ni skulle göra en motsatt innebörd hitta det lägsta området och motsvarande linje?

tack på förhand.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 12:49.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0