The UNIX and Linux Forums  


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
Neu bei Scripting, Sie brauchen Hilfe newbie22102 Shell Programmierung und Scripting 2 02-25-2008 11:08 AM
Scripting-Hilfe james94538 Shell Programmierung und Scripting 2 02-08-2008 07:36 PM
Unterschied zwischen AIX-Shell-Scripting und Unix-Shell-Scripting. haroonec Shell Programmierung und Scripting 2 04-12-2006 09:12 AM
Scripting-Guru's pls help me mit Skripting auf AIX thatiprashant Shell Programmierung und Scripting 1 01-20-2006 07:58 PM
KSH Scripting dstaller Shell Programmierung und Scripting 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 Suche diesen Thread Bewertung: Thread Rating: 1 votes, 5.00 average. Anzeige-Modi
  #1 (permalink)  
Old 10-10-2008
nani123 nani123 is offline
Registrierte Nutzer
  
 

Join Date: Oct 2008
Beiträge: 2
Brauchen Sie Hilfe Scripting

Sehr geehrte Scripting Experten,
Anfrage an mich auf dem Weg zu Spaltenwerte Zeilen
Beispiel:
Datei 1:

1, a, b, c, d, e, f, g, h
2, F, G, H, I, L

Ausgabe-Datei
1, a, b, c
1, d, e, f
1, g, h
2, f, g, h
2, I, L


Eigentlich habe ich mit mit awk und sed aber leider konnte ich nicht die sich daraus ergebenden.

Grüße
nani
  #2 (permalink)  
Old 10-10-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell-Programmierer, Autor
  
 

Join Date: März 2007
Ort: Toronto, Kanada
Beiträge: 2362
Zitat:
Zitat von nani123 View Post
Sehr geehrte Scripting Experten,
Anfrage an mich auf dem Weg zu Spaltenwerte Zeilen

Ihr Beispiel nicht bewegen Spalten Zeilen, er teilt Linien.

Hier ist ein Shell-Lösung.

Code:
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"

Wenn die Datei sehr groß ist, wird es langsam, und Sie sollten das Skript zu konvertieren awk mit der gleichen Logik.
  #3 (permalink)  
Old 10-10-2008
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Posts: 2915
Verwenden Sie nawk oder / usr/xpg4/bin/awk auf Solaris:


Code:
$ 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
Registrierte Nutzer
  
 

Join Date: Oct 2008
Beiträge: 7
Plz Finden Sie die Fehler im folgenden Code

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 \u003d\u003d NF? RS: FS: RS $ 1FS) fi;
) '

Zuletzt bearbeitet von pkumar3; am 10-13-2008 09:41 AM..
  #5 (permalink)  
Old 10-13-2008
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Posts: 2915
Zitat:
Zitat von pkumar3 View Post
Hi ich habe ein ähnliches Problem.
Source-Datei-Format ist der
1, a, b, c, d, e, f, g, h
2
3, F, G, H, I, L
4
5, m, n

Und die erwartete Ausgabe-Datei
1, a, b, c
1, d, e, f
1, g, h
3, f, g, h
3, I, L
5, m, n

Ich habe diese Methode
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) '

die Anzahl der Säulen in der Quelldatei ist varriable Länge und wachsen können, bis 3000.

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

  #6 (permalink)  
Old 10-10-2008
ShawnMilo ShawnMilo is offline
Registrierte Nutzer
  
 

Join Date: Jun 2006
Beiträge: 252
Hier ist eine ziemlich einfache Python-Ansatz (getestet und arbeiten).


Code:
$ 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:


Code:
$ 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 online now Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Posts: 2915
Perl Es fehlt:


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

Closed Thread

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 10:35 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