Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
Google Site



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.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 07-12-2008
Registered User
 

Join Date: juni 2008
Inlägg: 13
hur man kan skilja spalterna av en fil i perl utan särskilda avgränsare

Hej alla,
Denna gång Jag har en fråga i perl.
Jag måste skapa kommaseparerad fil med följande typ av information. Problemet är kolonnerna inte har några särskilda avgränsare. Så även använda delade jag får olika värde. En del där det finns plats (S) och en del där det är fliken (s). I vissa fall har jag inte värden under vissa specifika kolumn och dessa är också fylld med fliken (er) och / eller plats (er).
Revsn: Datum Vem SID Beskrivning av Modification
09-Jul-01 Amiya 01-04Jul01 lägga setdescriptor genvägar
02-aug-99 Ratha chk omfatta 1. Line
Ta bort per VandJ
06-Jan-98 DASP data föråldrade ...
02-Jul-97 Gupts lägga DDMM för fullständighetens

Jag vill ha min produktion som
09-Jul-01, Amiya ,01-04Jul01, lägg setdescriptor genvägar
02-aug-99, Ratha ,----, chk omfatta 1. Linje bort VandJ (Om linjen har bara beskrivning, komplettera föregående rad)
06-Jan-98, DASP ,----, data föråldrade ...
02-jul-97, Gupts ,----, lägga DDMM för fullständighetens
Tack på förhand ....
Sponsrade länkar
  #2 (permalänk)  
Old 07-12-2008
Moderator
 

Join Date: februari 2007
Ort: Nederländerna
Inlägg: 4.962
Prova detta:

Kod:
awk '
NR>1 && /^[0-9/{printf("\n%s",$0);next}
{printf(" %s",$0)}
END{print ""}
' file

Hälsningar
  #3 (permalänk)  
Old 07-12-2008
Registered User
 

Join Date: juni 2008
Inlägg: 13
Jag får syntax erro medan utföra detta kommando enligt nedan
awk: newline karaktär klass nära linje 1
awk: syntaxfel nära linje 2
awk: bailing ut nära linje 2
  #4 (permalänk)  
Old 07-12-2008
Moderator
 

Join Date: februari 2007
Ort: Nederländerna
Inlägg: 4.962
Använd nawk, gapa eller / usr/xpg4/bin/awk på Solaris.

Hälsningar
  #5 (permalänk)  
Old 07-12-2008
 

Join Date: maj 2008
Plats: Sydney, Australien
Inlägg: 1009
Prova detta:


Kod:
perl -ne '
	if (/^[0-9]{2}-[[:alpha:]]{3}-[0-9]{2}/) {
		if (defined($prev)) { printf($prev . "\n"); }
		($f1, $f2, $f3, undef, $f5) = m/([0-9]{2}-[[:alpha:]]{3}-[0-9]{2})[[:blank:]]+([[:alnum:]]+)[[:blank:]]+(([0-9]{2}-)?[0-9]{2}-?[[:alpha:]]{3}-?[0-9]{2}[[:blank:]])?(.*)/;
		if ($f3 == "") { $f3="----" }
		$prev = join(",",$f1,$f2,$f3,$f5);
	} else {
		$prev .= " " . chomp($_);
	}
	END { printf($prev . "\n"); }
' inputfile > outputfile

  #6 (permalänk)  
Old 07-12-2008
Registered User
 

Join Date: Jan 2008
Inlägg: 729
För att hjälpa till med en pålitlig lösning, måste du definiera vad området kan innehålla:

01-04Jul01

Det är alltid samma format eller kan det vara annorlunda dessutom bara inte finns? Svarar alltid samma dag i början av raden?
  #7 (permalänk)  
Old 07-12-2008
Registered User
 

Join Date: Sep 2006
Inlägg: 2.604

Kod:
awk '{p=c; c=$0}; !/^[0-9]+/{print p,c;next}1' file

perl:

Kod:
while (<>) {
    chomp; 
    $p = $c; $c = $_;
    if (!/^[0-9]+/) { print "$p $c\n" ; next ; }
    print $_ . "\n";
}


Senast redigerad av ghostdog74; 07-13-2008 at 12:12..
Sponsrade länkar
Closed Thread

Komihåglista

Taggar
Solaris

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 Av


Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Ta bort de särskilda rader från filen med perl dipakg Shell-programmering och Skript 4 06-11-2008 03:45
Perl: lägga till kolumner i CSV-fil med information i varje dolo21taf Shell-programmering och Skript 1 03-05-2008 02:52
byta plats med avgränsare helt file-perl meghana Shell-programmering och Skript 11 02-19-2008 09:35
styckning kolumner om avgränsare har mer än en charecter mahabunta UNIX for Dummies Frågor & Svar 9 09-14-2006 09:23
Radera särskilda kolumner från en fil premar Shell-programmering och Skript 11 02-14-2006 07:02



Alla tider är GMT -4. Klockan är nu 02:57.


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-2010. All Rights Reserved.Ad Management by RedTyger

Content Relevant webbadresser från vBSEO 3.2.0