Go Back   Το UNIX και Linux Forums > Top Forums > Ο προγραμματισμός και η Shell Scripting
.
Google Site



Ο προγραμματισμός και η Shell Scripting Post ερωτήσεις για KSH, CSH, SH, BASH, Perl, PHP, sed, AWK ΑΛΛΑ και shell scripts και shell scripting γλώσσα εδώ.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Εργαλεία Θέματος Αναζήτηση αυτό το νήμα Βαθμολογήστε Νήμα Display Modes
  #1 (Permalink)  
Old 12-04-2008
Εγγεγραμμένος χρήστης
 

Εγγραφή: Δεκέμβριος 2008
Θέσεις: 3
Awk πολλαπλές γραμμές με την 3η στήλη σε μια ενιαία γραμμή;

Έχω ένα τεράστιο αρχείο με πάνω από 1million καταχωρήσεις σε αυτό.
Μοιάζει κάπως έτσι:

USER0001 | DEVICE001 | VAR1
USER0001 | DEVICE001 | VAR2
USER0001 | DEVICE001 | VAR3
USER0001 | DEVICE001 | VAR4
USER0001 | DEVICE001 | VAR5
USER0001 | DEVICE001 | VAR6
USER0001 | DEVICE002 | VAR1
USER0001 | DEVICE002 | VAR2
USER0001 | DEVICE002 | VAR3
USER0001 | DEVICE002 | VAR4
USER0001 | DEVICE002 | VAR5
USER0002 | DEVICE003 | VAR1
USER0002 | DEVICE003 | VAR2
USER0002 | DEVICE003 | VAR3
USER0002 | DEVICE003 | VAR4
USER0002 | DEVICE003 | VAR5
USER0002 | DEVICE004 | VAR1
USER0002 | DEVICE004 | VAR2
USER0002 | DEVICE004 | VAR3
USER0002 | DEVICE004 | VAR4
USER0002 | DEVICE004 | VAR5
USER0003 | DEVICE005 | VAR1
USER0003 | DEVICE005 | VAR2
USER0003 | DEVICE005 | VAR3
USER0003 | DEVICE005 | VAR4
USER0003 | DEVICE005 | VAR5
USER0003 | DEVICE005 | VAR6
USER0003 | DEVICE006 | VAR1
USER0003 | DEVICE006 | VAR2
USER0003 | DEVICE006 | VAR6


Θα ήθελα ένα τρόπο για την παραγωγή της μόνο uniq veriables σε μια ενιαία γραμμή σαν αυτό:

USER0001 | DEVICE001 | VAR1 | VAR2 | VAR3 | VAR4 | VAR5 | VAR6
USER0001 | DEVICE002 | VAR1 | VAR2 | VAR3 | VAR4 | VAR5
USER0002 | DEVICE003 | VAR1 | VAR2 | VAR3 | VAR4 | VAR5
USER0002 | DEVICE004 | VAR1 | VAR2 | VAR3 | VAR4 | VAR5
USER0003 | DEVICE005 | VAR1 | VAR2 | VAR3 | VAR4 | VAR5 | VAR6
USER0003 | DEVICE006 | VAR1 | VAR2 | VAR6


Είναι αυτό εφικτό με awk ή θα χρειαστεί να χρησιμοποιήσετε perl array;

Τελευταία επεξεργασία από SoMoney? Στις 12-04-2008 06:39 μμ..
Sponsored Links
  #2 (Permalink)  
Old 12-04-2008
vgersh99's Avatar
Συντονιστής
 

Εγγραφή: Φεβρουάριος 2005
Τοποθεσία: Boston, MA
Δημοσιεύσεις: 5173

Κωδικός:
nawk 'BEGIN {FS="|"}END{for(r in _)print r FS _[r]}{idx=$1 FS $2;_[idx]=_[idx]?_[idx] FS $3:$3}' myFile

  #3 (Permalink)  
Old 12-04-2008
Εγγεγραμμένος χρήστης
 

Εγγραφή: Δεκέμβριος 2008
Θέσεις: 3
εντάξει αυτό είναι φοβερό, ποτέ δεν αναμένεται να αποτελέσει μία ναυτιλιακή!
Ι βέβαιος ότι θα ήθελε να μάθει πώς προσδιορίζεται nawk ήταν το καλύτερο εργαλείο για αυτή τη δουλειά.

Γνωρίζω ότι μπορώ να rtfm και το σχήμα αυτό, αλλά αν είναι δυνατόν, εγώ σίγουρος ότι θα εκτιμήσουν τον τρόπο με τον οποίο η μετάφραση του FS και idx παίξει σε αυτή την τελική λύση

Ή είναι ότι εκτός του τομέα των εν λόγω φόρουμ;

Τελευταία επεξεργασία από SoMoney? Στις 12-04-2008 07:49 μμ..
  #4 (Permalink)  
Old 12-05-2008
Εγγεγραμμένος χρήστης
 

Join Ημερομηνία: Απρίλιος 2008
Θέσεις: 45

Κωδικός:
awk -F "|" '{arr[$1"|"$2]=arr[$1"|"$2]"|"$3} END {for(i in arr) print i"|" arr[i]}' filename

  #5 (Permalink)  
Old 12-06-2008
Εγγεγραμμένος χρήστης
 

Εγγραφή: Ιούνιος 2007
Περιοχή: Πεκίνο, Κίνα
Δημοσιεύσεις: 1132

Κωδικός:
open FH,"<a.txt";
while(<FH>){
	tr/\n//d;
	my @tmp=split("[|]",$_);
	$key=$tmp[0]."|".$tmp[1];
	if(exists $hash{$key}){
		$hash{$key}=sprintf("%s|%s",$hash{$key},$tmp[2]);
	}
	else{
		$hash{$key}=$tmp[2];
	}
}
close FH;
for $key (sort keys %hash){
	print $key,"|",$hash{$key},"\n";
}

Sponsored Links
Closed Thread

Σελιδοδείκτες

Εργαλεία Θέματος Αναζήτηση αυτό το νήμα
Αναζήτηση αυτό το νήμα:

Advanced Search
Display Modes Βαθμολογήστε αυτό το νήμα
Βαθμολογήστε αυτό το νήμα:

Απόσπαση Κανονισμού
Εσύ δεν μπορεί να υστέρων νέα νήματα
Εσύ δεν μπορεί να μετά απαντήσεις
Εσύ δεν μπορεί να μετά συνημμένα
Εσύ δεν μπορεί να επεξεργαστείτε τις θέσεις

BB κωδικός είναι Σε λειτουργία
Smilies είναι Σε λειτουργία
[IMG] κωδικός Σε λειτουργία
Κώδικα HTML είναι Εκτός χρήσης
Trackbacks είναι Σε λειτουργία
Pingbacks είναι Σε λειτουργία
Refbacks είναι Εκτός χρήσης


Περισσότερα UNIX και Linux Forum Θέματα που μπορεί να σας Χρήσιμη
Νήμα Thread Starter Φόρουμ Απαντήσεις Τελευταίο μήνυμα
που αντικαθιστά τις πολλαπλές γραμμές με ενιαία γραμμή siba.s.nayak Ο προγραμματισμός και η Shell Scripting 3 05-28-2008 03:43 AM
Ενιαία στήλη με πολλαπλές στήλες σε awk astroDave Ο προγραμματισμός και η Shell Scripting 2 03-27-2008 10:00 μμ
μόνο στήλη σε πολλαπλές στήλες agibbs UNIX για Ανδρείκελα Ερωτήσεις & Απαντήσεις 7 12-05-2007 10:04 μμ
Ανάγνωση πολλαπλές γραμμές ως ενιαίο εγκεφάλων Ο προγραμματισμός και η Shell Scripting 9 10-18-2006 11:16 AM
Η διαίρεση μιας ενιαίας γραμμής σε πολλαπλές γραμμές thanuman Ο προγραμματισμός και η Shell Scripting 4 02-23-2005 04:56 AM



Όλες οι ώρες είναι GMT -4. Η ώρα τώρα είναι 12:25 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Γλώσσα Μεταφράσεις Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Η UNIX και Linux Φόρουμ Content Copyright © 1993-2010. Όλα τα δικαιώματα Reserved.Ad διαχείριση από RedTyger

Περιεχόμενο σχετικό με τις διευθύνσεις URL vBSEO 3.2.0