The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Ny på manus, Behöver hjälp newbie22102 Shell-programmering och Skript 2 02-25-2008 11:08
scripting hjälp james94538 Shell-programmering och Skript 2 02-08-2008 07:36
Skillnaden mellan AIX shell scripting och Unix shell scripting. haroonec Shell-programmering och Skript 2 04-12-2006 09:12
scripting guru's pls hjälpa mig med scripting på AIX thatiprashant Shell-programmering och Skript 1 01-20-2006 07:58
Ksh Scripting dstaller Shell-programmering och Skript 1 11-16-2005 02:30

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 Sök i denna tråd Omdöme: Thread Rating: 1 votes, 5.00 average. Visningslägen
  #1 (permalänk)  
Old 10-10-2008
nani123 nani123 is offline
Registered User
  
 

Join Date: oktober 2008
Inlägg: 2
Behöver scripting Hjälp

Bäste Scripting experter,
Begär att vägleda mig i att flytta kolumnen värden till rader
Exempel:
Fil 1:

1, A, B, C, D, E, F, G, H
2, F, G, H, I, L

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


Egentligen försökte jag med hjälp av awk och sed men tyvärr kunde jag inte få resultanten.

Hälsningar
nani
  #2 (permalänk)  
Old 10-10-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmerare, författare
  
 

Join Date: mars 2007
Ort: Toronto, Kanada
Inlägg: 2361
Citat:
Ursprungligen postat av nani123 View Post
Bäste Scripting experter,
Begär att vägleda mig i att flytta kolumnen värden till rader

Ditt exempel inte flytta kolumner till rader, det delar upp rader.

Här är ett skal lösning.
Kod:
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"
Om filen är stor, det kommer att vara långsam, och du bör konvertera scriptet till awk med samma logik.
  #3 (permalänk)  
Old 10-10-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2.875
Använd nawk eller / usr/xpg4/bin/awk på Solaris:

Kod:
$ 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 (permalänk)  
Old 10-13-2008
pkumar3 pkumar3 is offline
Registered User
  
 

Join Date: oktober 2008
Inlägg: 7
Plz Hitta felet i följande kod

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;
) '

Senast redigerad av pkumar3; 10-13-2008 vid 09:41..
  #5 (permalänk)  
Old 10-13-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2.875
Citat:
Ursprungligen postat av pkumar3 View Post
Hej Jag har ett liknande problem.
källfilen är av format
1, A, B, C, D, E, F, G, H
2
3, F, G, H, I, L
4
5, m, n

Och den förväntade utdatafilen
1, a, b, c
1, d, e, f
1, G, H
3, F, G, H
3, I, L
5, m, n

Jag använde denna metod
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) '

det ingen av coloumns i källfilen är varriable längd och kan växa upp till 3000.
Kod:
perl -F, -nae'if($#F){s/((?:(?:.*?),){3}[^,]*)/$1\n$F[0]/g;print}' filename
  #6 (permalänk)  
Old 10-10-2008
ShawnMilo ShawnMilo is offline
Registered User
  
 

Join Date: juni 2006
Inlägg: 252
Här är en ganska enkel Python tillvägagångssätt (testas och arbete).

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

Kod:
$ 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 (permalänk)  
Old 10-10-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2.875
Perl saknas:

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

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 01:23.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0