The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



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

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
het lezen van tekst bestand regel voor regel MizzGail Programmeren en Shell Scripting 6 04-14-2008 07:58
Regel voor regel bestand lezen ... en meer! ProFiction Programmeren en Shell Scripting 6 07-26-2007 12:32
Reading regel voor regel uit een bestand tej.buch Programmeren en Shell Scripting 2 01-23-2006 02:50
sed niet uitvoeren van de laatste regel van het invoerbestand 2reperry Programmeren en Shell Scripting 3 12-16-2005 12:51
Reading regel voor regel uit het bestand. akpopa UNIX voor Dummies Questions & Answers 4 08-30-2001 11:20 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-17-2008
Darkness Vis Darkness Fish is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2008
Posten: 2
Question Probleem met het lezen van het bestand regel voor regel, en het uitsturen van een nieuw bestand

Hallo iedereen. Ik weet dit is waarschijnlijk een beetje een noob vraag, maar ik ben eigenlijk een C #-ontwikkelaar werkt aan een legacy-systeem, en kan me niet herinneren veel Unix.

Ik wil lezen uit een pijp-delimeted bestand als geformatteerd thusly:

IDno | PRODUCT | Naam | Straat Plaats Postcode | enz. | enz. | enz. | enz.
IDno | PRODUCT | Naam | Straat Plaats Postcode | enz. | enz. | enz. | enz.
IDno | PRODUCT | Naam | Straat Plaats Postcode | enz. | enz. | enz. | enz.

Ik wil elke regel te kopiëren naar een ander bestand, afhankelijk van het PRODUCT bestaande in een string variabele I'm bedrijf in het geheugen: "prod1 | prod2 | prod3" ($ producten in voorbeeld hieronder)

Daarom heb ik probeerde:

voor de lijn in `cat $ temp_dir / $ filename | awk '(print $ 0)'`
doen
prod \u003d `echo" $ line "| awk 'BEGIN (FS \u003d"|"} (print $ 2)'`
valid_prod \u003d `echo $ producten | grep" $ Prod "`
if [-n "$ valid_prod"]; dan
echo "$ line">> $ new_file.txt
fi
gedaan

Maar deze lijn variabele lijkt te scheiden op basis van ruimtes, het creëren van het nieuwe bestand als:

IDno | PRODUCT | Naam | straat
stad
postcode | enz. | enz. | enz. | enz.

Is er toch kan ik elke lijn passeren als een enkele parameter, ongeacht de ruimtes?

Elke hulp is dankbaar gewaardeerd,
Dave
  #2 (permalink)  
Old 07-17-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: december 2007
Locatie: Home 17-time wereld kampioen Boston Celtics
Berichten: 1311
Wink Een andere benadering (zij het niet getest)


Code:
while read zf
   do
   prod=$(echo "$zf" | cut -d"|" -f2)
   valid_prod=$(echo "$products" | grep "$prod")
   if [ -n "$valid_prod" ]
      then
      echo "$zf" >>$new_file
   fi
done <$filename

Soms krijg ik zo in de war met behulp van de "en" dus ik heb liever de bovengenoemde aanpak.
  #3 (permalink)  
Old 07-17-2008
TinWalrus TinWalrus is offline
Geregistreerde gebruiker
  
 

Join Date: May 2007
Posts: 35
Ifs

kunt manipuleren de IFS (interne field separator) - als voorbeeld - gezien het feit dat go.dat bevat de regels met spaties

# Maak de array, zonder het manipuleren van IFS, zal ruimtes breken de array
#
set-A-lijnen $ (cat go.dat)
voor de lijn in "$ (lijnen [@]}"; doen
echo "" $ line "
gedaan

# Maak de array, maar eerst de IFS (set terug - zeer belangrijk)
# Na de array is ingesteld
#
oIFS \u003d $ IFS
IFS IFS \u003d $ (# #?)
set-A-lijnen $ (cat go.dat)
IFS \u003d $ oIFS

voor de lijn in "$ (lijnen [@]}"; doen
echo "" $ line "
gedaan


# # # # # # Go.dat
IDno a | PRODUCT | Naam | Straat Plaats Postcode | enz. | enz. | enz. | enz.
IDno b | PRODUCT | Naam | Straat Plaats Postcode | enz. | enz. | enz. | enz.
IDno c | PRODUCT | Naam | Straat Plaats Postcode | enz. | enz. | enz. | enz.

# # # Einde go.dat # # #


Ik realiseer me dat niet helpen uw probleem (duisternis vis al beantwoord) dus ik dacht dat ik zou mijn ,02 gooien in ongeveer IFS - sinds ik gebeten door die in het verleden - en het is altijd handig vrij vaak
  #4 (permalink)  
Old 07-18-2008
Darkness Vis Darkness Fish is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2008
Posten: 2
Hartelijk dank voor uw hulp, zowel van u, het is zeer gewaardeerd.

Ik was te verdwalen in een wereld van willekeurige onverstaanbare commando awk gevonden via google.
  #5 (permalink)  
Old 07-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: december 2007
Locatie: Home 17-time wereld kampioen Boston Celtics
Berichten: 1311
Cool In unix, zijn er een bijna oneindig aantal manieren om dingen op te lossen

Zoals u lezen via dit forum, moet je een smaak van de verschillende manieren om een probleem op te lossen. Er zijn kwesties
awk vs grep of gesneden
nutteloos kat
en vele anderen. Sommige oplossingen kunnen meer robuuste, terwijl anderen gewoon goed uitzien.

Dus, niet kleineren arme awk - het serveert geweldige zin voor bepaalde database problemen.
Closed Thread

Bladwijzers

Labels
awk, bestand, grep of, lezen, ruimten, schrijven

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 Aan




Alle tijden zijn GMT -4. Het is nu 12:45 AM.


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-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0