|
|
|
|
Google Site
|
|||||||
| Forums | Registreer | Blog | Man Pages | Forum Regels | Links | Albums | Veelgestelde vragen | Gebruikers | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
![]() |
|
|
Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|||
|
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 | ||
|
|
|
|||
|
Citaat:
Code:
awk -F"|" ' {
if ( $2 ~ /^ *$/ ) printf("102 ")
if ( $4 ~ /^ *$/ ) printf("104")
printf("\n")
} ' file |
|
|||
|
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 $ |
|
|||
|
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 |
|
|||
|
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 |
|
|
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|
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 |