Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
Google Site



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-19-2007
Geregistreerde gebruiker
 

Join Date: Apr 2007
Posts: 22
Hoe om te controleren Null-waarden in een bestand column van kolom of kolommen niet Null

Hi All,
Ik heb een tabel met 10 kolommen. Sommige kolommen (2e, 4e, 5e, 7e, 8e en 10e) zijn geen kolommen Null. Ik krijg een tab-gescheiden bestand en je wilt controleren door col col en aparte error code voor elke col bijvoorbeeld te genereren: 102 als 2e col waarde NULL en 104 als 4e col waarde NULL zo op ... Ik ben een newbie op Unix en alle hulp wordt gewaardeerd.


Groeten,
Mandab
Sponsored Links
  #2 (permalink)  
Old 04-19-2007
anbu23 anbu23 is offline Forum Advisor  
Geregistreerde gebruiker
 

Join Datum: maart 2006
Locatie: Bangalore, India
Berichten: 1577
Citaat:
Oorspronkelijk geplaatst door Mandab
Hi All,
Ik heb een tabel met 10 kolommen. Sommige kolommen (2e, 4e, 5e, 7e, 8e en 10e) zijn geen kolommen Null. Ik krijg een tab-gescheiden bestand en je wilt controleren door col col en aparte error code voor elke col bijvoorbeeld te genereren: 102 als 2e col waarde NULL en 104 als 4e col waarde NULL zo op ... Ik ben een newbie op Unix en alle hulp wordt gewaardeerd.


Groeten,
Mandab

Code:
awk -F"|" ' { 
       if ( $2 ~ /^ *$/ ) printf("102 ")
       if ( $4 ~ /^ *$/ ) printf("104")
       printf("\n")
} ' file

  #3 (permalink)  
Old 05-02-2007
Geregistreerde gebruiker
 

Join Date: Apr 2007
Posts: 22
Ik probeerde met het monster gegevens, maar het is niet de precieze output:
Het monster gegevens is:
545689512 <tab> 20070424 <tab> 20070414 <tab> 456,25 <tab> 20061121 <tab> PQR
<tab> 20060726 <tab> 20060524 <tab> 800,12 <tab> <tab> abc
24 <tab> <tab> 05242006 <tab> 22,15 <tab> 20050815 <tab> xyz
57 <tab> 20040425 <tab> 20041214 <tab> <tab> 20040628 <tab> STV

De gegevens worden van de 3e rij in het bestand, de volgende is het script heb ik geprobeerd:

#! / bin / ksh

awk-F "|" 'NR> \u003d 3 (# # gegevens uit 3e rij vanaf
if ($ 2 ~ / ^ * $ /) printf ( "102")
if ($ 4 ~ / ^ * $ /) printf ( "104")
printf ( "/ n")
) '$ 1 # # filename

De uit leg ik heb is:
$ Test6.ksh test1.txt
102104/n102104/n102104/n102104/n $
  #4 (permalink)  
Old 05-02-2007
kahuna's Avatar
Geregistreerde gebruiker
 

Join Date: Apr 2007
Posts: 149
Mandab,

Probeer vervanging van de-F "|"Met-F"<tab>"Waar <tab> het tabblad karakter.
Ook printf ( "/n ") moet worden printf ("\n ")
  #5 (permalink)  
Old 05-02-2007
Geregistreerde gebruiker
 

Join Date: Apr 2007
Posts: 22
Bedankt voor je snelle reactie, ik probeerde te vervangen zoals je zei, maar ik ben nog steeds fouten. Het script is:
#! / bin / ksh

awk-F "<tab>" 'NR> \u003d 3 (
if ($ 2 ~ / ^ * $ /) printf ( "102")
if ($ 4 ~ / ^ * $ /) printf ( "104)
printf ( "\ n")
) '$ 1

Fouten Ik krijg:
$ Test7 test1.txt
awk: newline in string in de buurt van lijn 3
awk: syntaxisfout buurt van lijn 4
awk: illegale verklaring buurt van lijn 4
  #6 (permalink)  
Old 05-02-2007
kahuna's Avatar
Geregistreerde gebruiker
 

Join Date: Apr 2007
Posts: 149
Citaat:
Oorspronkelijk geplaatst door Mandab
awk-F "<tab>" 'NR> \u003d 3 (
Ik had de bedoeling dat <tab> letterlijk worden vervangen door het tabblad karakter - CTNL (H).

Citaat:
Oorspronkelijk geplaatst door Mandab
if ($ 4 ~ / ^ * $ /) printf ( "104)
U mist een hechte "na 104.

Ik ben in de war. Is uw bestand wordt begrensd door de tabteken of per set van karakters "<tab>" getoond in uw post?
  #7 (permalink)  
Old 05-02-2007
Geregistreerde gebruiker
 

Join Date: Apr 2007
Posts: 22
Excellent! zijn werk nu goed.
Maar er is een klein probleem, Als er een fout in het veld en ook een veld twee dan zou ik nog maar fout te worden afgedrukt als "102". maar niet beide "102" en "104" te worden afgedrukt, te baseren op de seriële volgorde van de velden zoals veld1, veld2. Ook kan ik de fout waarde in een variabele zodat ik het kan gebruiken voor verschillende doeleinden in mijn script (buiten awk)?

Hier is het script:
#! / bin / ksh

awk-F "," 'NR> \u003d 3 (
if (length ($ 2)! \u003d 8 | | $ 2 ~ / [^ 0-9] / | | $ 2 ~ / ^ * $ /) (var1 \u003d "102")
if ($ 4 ~ / ^ * $ /) (var1 \u003d "104")
(printf var1)
printf ( "\ n")
) '$ 1


De output:


102
104
Sponsored Links
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Uit


Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Hoe lees ik de kolom en afdrukken van de waarden onder die kolom gemini106 Programmeren en Shell Scripting 6 03-28-2008 07:05
Een kolom aan meerdere kolommen in awk astroDave Programmeren en Shell Scripting 2 03-27-2008 10:00 PM
Ik moet uittreksel laatste kolom van een bestand en vergelijken de waarden vukkusila Programmeren en Shell Scripting 4 08-04-2007 12:21
vervanging van een kolom met de waarden van de eerste waarde in de kolom sumeet UNIX for Advanced & Expert Gebruikers 3 02-06-2007 01:13 PM
Print laatste 4 kolommen (variabele kolom #) Da_Duck UNIX voor Dummies Questions & Answers 19 02-27-2004 10:33



Alle tijden zijn GMT -4. Het is nu 05:35 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De UNIX-en Linux Forums Copyright © 1993-2010. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0