The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Legge til en kolonne til en tekst basert på filnavn rlapate Shell programmering og Skripting 12 05-23-2009 10:22
Filtrere poster i en fil basert på en verdi av en kolonne risk_sly UNIX for Dummies Spørsmål og svar 4 09-24-2008 03:22
sortering fil basert på to eller flere kolonner labrazil Shell programmering og Skripting 2 09-17-2008 12:19
Hent linje fra en fil basert på en verdi i spesifikke kolonne efernandes UNIX for Dummies Spørsmål og svar 1 01-27-2007 11:04
Sortering en flat fil basert på flere colums (med karakter posisjon) cucubird Shell programmering og Skripting 8 07-25-2006 01:47

Reply
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 denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 07-03-2009
tententen tententen is offline
Registrert bruker
  
 

Bli Dato: desember 2008
Innlegg: 17
sortering CSV-fil basert på kolonnen valgt

Hei alle,

i CSV-filen min den vil se slik ut, og selvfølgelig kan den ha flere kolonner

US til UK; abc-HQ-JCL; multimedia
UK til CN, def-ny-jkl; standard
DE til DM, abc-ab-KLM; kritisk
FD til YM, la-yr-tym; standard
HY til MC; la-yr-ytm; multimedia
GT til KJ; def-ny-jrt; kritisk

Jeg ønsker å gruppere dem basert på den 3. kolonnen først, og deretter sortere dem basert på 2nd column så det skal se slik ut

DE til DM, abc-ab-KLM; kritisk
GT til KJ; def-ny-jrt; kritisk
US til UK; abc-HQ-JCL; multimedia
HY til MC; la-yr-ytm; multimedia
UK til CN, def-ny-jkl; standard
FD til YM, la-yr-tym; standard

det ville være fint hvis en eller annen måte jeg kan gjøre det se slik ut så det skal se mer presentabel: P

KRITISK
DE til DM, abc-ab-KLM; kritisk
GT til KJ; def-ny-jrt; kritisk

Multimedia
US til UK; abc-HQ-JCL; multimedia
HY til MC; la-yr-ytm; multimedia

Standard
UK til CN, def-ny-jkl; standard
FD til YM, la-yr-tym; standard
  #2 (permalink)  
Old 07-03-2009
vidyadhar85's Avatar
vidyadhar85 vidyadhar85 is offline Forum Staff  
Moderator (The Tutor)
  
 

Bli Dato: juni 2008
Beliggenhet: INDIA
Innlegg: 1400
hmmm bruker sort kommandoen

Code:
sort -t";" -k3 -k2 filename

og for andre req bruk awk ..

Code:
sort -t";" -k3 -k2 filename|awk -F\; '{A[$3]=A[$3]"\n"$0}END{for (i in A){print toupper(i)A[i]}}'

  #3 (permalink)  
Old 07-04-2009
kshji's Avatar
kshji kshji is offline
Registrert bruker
  
 

Bli Dato: juni 2009
Sted: Finland
Innlegg: 236
Bruke awk regelen idé.

Code:
ff=file.txt

sort -t";" -k3 -k2 $ff | \
   awk -F";" -v keyfld=3 '
      # - next key value
      $keyfld != prevkey { 
                print toupper($keyfld) 
                }
      # - every line
                { 
                print $0
                prevkey=$keyfld
                }
   '

Eller bruker ksh

Code:
prevkey=""
oifs="$IFS"
typeset -u key
sort -t";" -k3 -k2 $ff | while read line
do
        IFS=";"
        set -A flds -- $line    # to array, 1st index 0 
        IFS="$oifs"
        key=${flds[2]}
        [ "$prevkey" != "$key" ] && print "$key"
        print "$line"
        prevkey=$key
done

  #4 (permalink)  
Old 07-04-2009
scottn scottn is offline Forum Advisor  
VIP-medlem
  
 

Bli Dato: juni 2009
Sted: Zürich, CH
Innlegg: 1092
Fordi du sa

Sitat:
... det kan ha flere kolonner
En liten endring i vidyadhar85 koden

Code:
sort -t";" -k3 -k2 filename|awk -F\; '{A[$NF]=A[$NF]"\n"$0}END{for (i in A) {print toupper(i)A[i]}}'

  #5 (permalink)  
Old 07-05-2009
summer_cherry summer_cherry is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: juni 2007
Sted: Beijing Kina
Innlegg: 1089
hvordan nedenfor perl:


Code:
my @arr=<DATA>;
print map {$_->[0]}
      sort {$a->[1]->[2] cmp $b->[1]->[2] or $a->[1]->[1] cmp $b->[1]->[1]}
      map {my @tmp=split(";",$_);[$_,\@tmp]}
      @arr;
__DATA__
US to UK;abc-hq-jcl;multimedia
UK to CN;def-ny-jkl;standard
DE to DM;abc-ab-klm;critical
FD to YM;la-yr-tym;standard
HY to MC;la-yr-ytm;multimedia
GT to KJ;def-ny-jrt;critical

Reply

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 02:10.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0