The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Hinzufügen einer Spalte zu einem Text auf der Grundlage von Dateinamen rlapate Shell Programmierung und Scripting 12 05-23-2009 10:22 PM
Filter Datensätze einer Datei auf einen Wert einer Spalte risk_sly UNIX for Dummies Questions & Answers 4 09-24-2008 03:22 AM
Sortier-Datei auf der Grundlage von zwei oder mehr Spalten labrazil Shell Programmierung und Scripting 2 09-17-2008 12:19 AM
Abrufen Linie aus einer Datei auf einen Wert in Spalte efernandes UNIX for Dummies Questions & Answers 1 01-27-2007 11:04 AM
Sortieren einer flachen Datei auf mehreren Spalten (mit Zeichen) cucubird Shell Programmierung und Scripting 8 07-25-2006 01:47 AM

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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 07-03-2009
tententen tententen is offline
Registrierte Nutzer
  
 

Join Date: Dezember 2008
Beiträge: 17
Sortierung csv-Datei auf der Grundlage Spalte ausgewählt

Hi all,

in meiner CSV-Datei ist dann etwa so aussehen, und natürlich kann es mehr Spalten

USA, Großbritannien, ABC-hq-JCL, Multimedia
UK den KN; def-NY-jkl; Standard
DE DM; ABC-AB-KLM; kritischen
FD zu YM; la-yr-tym, Standard
HY zu MC; la-yr-YTM; Multimedia
GT KJ; def-NY-JRT; kritischen

Ich möchte diese Gruppe auf der Grundlage der 3. Spalte, dann sortieren sie auf der Grundlage 2. Spalte, so dass dann so aussehen

DE DM; ABC-AB-KLM; kritischen
GT KJ; def-NY-JRT; kritischen
USA, Großbritannien, ABC-hq-JCL, Multimedia
HY zu MC; la-yr-YTM; Multimedia
UK den KN; def-NY-jkl; Standard
FD zu YM; la-yr-tym, Standard

Es wäre auch schön, wenn ich irgendwie kann es so aussehen, so dass Sie sich mehr präsentabel: P,

KRITISCHER
DE DM; ABC-AB-KLM; kritischen
GT KJ; def-NY-JRT; kritischen

Multimedia
USA, Großbritannien, ABC-hq-JCL, Multimedia
HY zu MC; la-yr-YTM; Multimedia

Standard
UK den KN; def-NY-jkl; Standard
FD zu YM; la-yr-tym, Standard
  #2 (permalink)  
Old 07-03-2009
vidyadhar85's Avatar
vidyadhar85 vidyadhar85 is offline Forum Staff  
Moderator (der Tutor)
  
 

Join Date: Jun 2008
Lage: INDIEN
Beiträge: 1.400
hmmm Verwendung Sortieren Befehl
Code:
sort -t";" -k3 -k2 filename
und für die zweite notwendig awk verwenden ..
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
Registrierte Nutzer
  
 

Join Date: Jun 2009
Ort: Finnland
Beiträge: 236
Mit awk Regel Idee.
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
                }
   '
Oder mit 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-Mitglied
  
 

Join Date: Jun 2009
Ort: Zürich, CH
Beiträge: 1.053
Denn Sie haben gesagt,

Zitat:
... Sie können weitere Spalten
Eine leichte Änderung vidyadhar85-Code
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  
Registrierte Nutzer
  
 

Join Date: Jun 2007
Ort: Peking, China
Posts: 1088
Wie wäre es unter 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

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 03:00 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0