The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Nuovo per lo scripting, Hai bisogno di aiuto newbie22102 Shell scripting e di programmazione 2 02-25-2008 11:08 AM
scripting aiutare james94538 Shell scripting e di programmazione 2 02-08-2008 07:36 PM
differenza tra AIX e Unix shell scripting di shell scripting. haroonec Shell scripting e di programmazione 2 04-12-2006 09:12 AM
scripting guru del pls help me con lo scripting su AIX thatiprashant Shell scripting e di programmazione 1 01-20-2006 07:58 PM
KSH Scripting dstaller Shell scripting e di programmazione 1 11-16-2005 02:30 PM

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 Cerca in questo Thread Rating: Thread Rating: 1 votes, 5.00 average. Modalità di visualizzazione
  #1 (permalink)  
Old 10-10-2008
nani123 nani123 is offline
Utente Registrato
  
 

Iscriviti Data: ottobre 2008
Interventi: 2
Necessità di scripting Aiuto

Cari esperti di scripting,
Richiesta di guida a me nel movimento colonna valori di righe
Esempio:
File 1:

1, a, b, c, d, e, f, g, h
2, f, g, h, i, l

File di output
1, a, b, c
1, D, E, F
1, g, h
2, f, g, h
2, I, L


In realtà ho provato con l'uso di awk e sed ma purtroppo non ho potuto ottenere la risultante.

Saluti
Nani
  #2 (permalink)  
Old 10-10-2008
cfajohnson's Avatar
cfajohnson cfajohnson is online now Forum Advisor  
Shell programmatore, autore
  
 

Iscriviti Data: marzo 2007
Luogo: Toronto, Canada
Interventi: 2.369
Citazione:
Originalmente inviato da nani123 View Post
Cari esperti di scripting,
Richiesta di guida a me nel movimento colonna valori di righe

Il tuo esempio non si muove a righe colonne, che divide le linee.

Ecco una shell soluzione.

Codice:
IFS=,
set -f
while read line
do
  set -- $line
  if [ $# -le 4 ]
  then
    print "$line"
  else
   a=$1
   shift
   while [ $# -gt 3 ]
   do
     printf "%s," "$a" "$1" "$2"
     printf "%s\n" "$3"
     shift 3
   done
   printf "%s," "$a"
   while [ $# -gt 1 ]
   do
     printf "%s," "$1"
     shift
   done
   printf "%s\n" "$1"
  fi
done < "$FILE"

Se il file è grande, sarà lento, e si deve convertire lo script di awk che utilizzano la stessa logica.
  #3 (permalink)  
Old 10-10-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Iscriviti Data: gennaio 2007
Ubicazione: Варна, България / Milano, Italia
Messaggi: 2.926
Usa nawk / o usr/xpg4/bin/awk su Solaris:


Codice:
$ cat file
1,a,b,c,d,e,f,g,h
2,f,g,h,i,l
$ awk -F, '{
  printf$1FS;c=0
  for(i=2;i<=NF;i++)
    printf$i (++c%3?i==NF?RS:FS:RS$1FS)
}' file
1,a,b,c
1,d,e,f
1,g,h
2,f,g,h
2,i,l

  #4 (permalink)  
Old 10-13-2008
pkumar3 pkumar3 is offline
Utente Registrato
  
 

Iscriviti Data: ottobre 2008
Interventi: 7
Plz OUT Trova l'errore nel codice seguente

cut-f 7,34 --d "," first97col.CSV | awk-F \ '(
if ($ 2 !\u003d"") printf $ 1FS c \u003d 0
for (i \u003d 2; i <\u003d NF; i + +)
printf $ i (+ + c% 4? i NF \u003d\u003d? RS: FS: RS $ 1FS) fi;
) '

Ultimo a cura di pkumar3; al 10/13/2008 09:41 AM..
  #5 (permalink)  
Old 10-13-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Iscriviti Data: gennaio 2007
Ubicazione: Варна, България / Milano, Italia
Messaggi: 2.926
Citazione:
Originalmente inviato da pkumar3 View Post
Salve ho un problema analogo.
fonte del file è in formato
1, a, b, c, d, e, f, g, h
2
3, f, g, h, i, l
4
5, m, n

E il file di output attesi
1, a, b, c
1, D, E, F
1, g, h
3, f, g, h
3, I, L
5, m, n

Ho utilizzato questo metodo
awk-F, '$ 1! \u003d p1 (printf "% s,% s,% s,% s \ n", $ 1, $ 2, $ 3, $ 4) $ 2! \u003d p2 (printf "% s,% s,% s ,% s \ n ", $ 1, $ 5, $ 6, $ 7, $ 8; p1 \u003d $ 1; p2 \u003d $ 2) '

il numero di coloumns nel file sorgente è varriable di lunghezza e possono crescere fino a 3000.

Codice:
perl -F, -nae'if($#F){s/((?:(?:.*?),){3}[^,]*)/$1\n$F[0]/g;print}' filename

  #6 (permalink)  
Old 10-10-2008
ShawnMilo ShawnMilo is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2006
Interventi: 252
Ecco un approccio abbastanza semplice Python (testato e di lavoro).


Codice:
$ cat nani123.py 
#!/usr/bin/env python

input = open("temp.txt", 'r')

for line in input:

    line = line.rstrip()
    line = line.split(',')
    num = line[0]
    data = line[1:]

    while data:
        print num + "," + ','.join(data[:3])
        data = data[3:]

Test:


Codice:
$ cat temp.txt 
1,a,b,c,d,e,f,g,h
2,f,g,h,i,l


$ python nani123.py 
1,a,b,c
1,d,e,f
1,g,h
2,f,g,h
2,i,l

  #7 (permalink)  
Old 10-10-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Iscriviti Data: gennaio 2007
Ubicazione: Варна, България / Milano, Italia
Messaggi: 2.926
Perl manca:


Codice:
perl -F, -pae's/((?:(?:.*?),){3}[^,]*)/$1\n$F[0]/g' file

Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 01:26 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0