The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
lesing tekstfil linje for linje MizzGail Shell programmering og Skripting 6 04-14-2008 07:58
Linje for linje fil leser ... og mer! ProFiction Shell programmering og Skripting 6 07-26-2007 12:32
Lese linje for linje fra en fil tej.buch Shell programmering og Skripting 2 01-23-2006 02:50
sed ikke gi ut siste linje av inndatafilen 2reperry Shell programmering og Skripting 3 12-16-2005 12:51
Lese linje for linje fra filen. akpopa UNIX for Dummies Spørsmål og svar 4 08-30-2001 11:20

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 denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 07-17-2008
Darkness Fish Darkness Fish is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 2
Question Problemet med å lese filen line-by-line, og sender ut til en ny fil

Hei alle. Jeg innser at dette er trolig en bit av en noob spørsmål, men jeg er egentlig en C # utvikleren jobber med et gammelt system, og kan ikke huske mye unix.

Jeg vil lese fra en pipe-delimeted filen som formatert thusly:

idno | PRODUKT | Navn | street byen postnummer | etc. | etc | etc. | etc
idno | PRODUKT | Navn | street byen postnummer | etc. | etc | etc. | etc
idno | PRODUKT | Navn | street byen postnummer | etc. | etc | etc. | etc

Jeg ønsker å kopiere hver linje til en annen fil, avhengig av PRODUKT eksisterende i en streng variabel Jeg sparer i minnet: "prod1 | prod2 | prod3" ($ produkter i eksempelet nedenfor)

Derfor var jeg prøver:

for linje in `cat $ temp_dir / $ filnavn | awk '(print $ 0)'`
gjøre
prod \u003d `echo" $ line "| awk 'BEGIN (FS \u003d"|"} (print $ 2)'`
valid_prod \u003d `echo $ produkter | grep" $ prod "`
if [-n "$ valid_prod"]; da
echo "$ linje">> $ new_file.txt
fi
ferdig

Men denne linja variabelen synes å skille basert på områder, skape den nye filen som:

idno | PRODUKT | Navn | street
by
postnummer | etc. | etc | etc. | etc

Er der allikevel jeg kan passere hver linje gjennom som en enkelt parameter, uansett mellomrom?

Alle hjelpe er takknemlig verdsatt,
Dave
  #2 (permalink)  
Old 07-17-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Bli Dato: desember 2007
Sted: Hjemme i 17-tiden verdensmesteren Boston Celtics
Innlegg: 1311
Wink En helt annen tilnærming (riktignok testet)


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

Noen ganger får jeg så forvirret ved hjelp av 'og `derfor jeg foretrekker de ovennevnte tilnærming.
  #3 (permalink)  
Old 07-17-2008
TinWalrus TinWalrus is offline
Registrert bruker
  
 

Bli Dato: mai 2007
Innlegg: 35
Ifs

du kan manipulere IFS (intern feltet skilletegn) - som et eksempel - gitt at go.dat inneholder linjer med mellomrom

# Opprette array, uten å manipulere IFS vil mellomrom bryte array
#
set-A linjer $ (cat go.dat)
for linje i "$ (linjer [@]}"; do
echo "" $ line "
ferdig

# Opprette array, men først endre IFS (sette den tilbake - svært viktig)
# Etter array er satt
#
oIFS \u003d $ IFS
IFS \u003d $ (IFS # #?)
set-A linjer $ (cat go.dat)
IFS \u003d $ oIFS

for linje i "$ (linjer [@]}"; do
echo "" $ line "
ferdig


# # # Go.dat # # #
idno a | PRODUKT | Navn | street byen postnummer | etc. | etc | etc. | etc
idno b | PRODUKT | Navn | street byen postnummer | etc. | etc | etc. | etc
idno c | PRODUKT | Navn | street byen postnummer | etc. | etc | etc. | etc

# # # Slutten go.dat # # #


Jeg innser at ikke hjelper ditt problem (mørke fisk allerede besvart) så jeg tenkte jeg skulle kaste meg ,02 i om IFS - siden jeg har blitt bitt av at i det siste - og det kommer i hendig ganske ofte
  #4 (permalink)  
Old 07-18-2008
Darkness Fish Darkness Fish is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 2
Tusen takk for hjelpen, dere begge, det høyeste verdsatt.

Jeg begynte å bli mistet i en verden av tilfeldige uforståelig awk kommandoer funnet via google.
  #5 (permalink)  
Old 07-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Bli Dato: desember 2007
Sted: Hjemme i 17-tiden verdensmesteren Boston Celtics
Innlegg: 1311
Cool I unix er det en nesten uendelig antall måter å løse ting

Som du leser gjennom dette forumet, bør du få en smak av de forskjellige måtene å løse et problem. Det er spørsmål om
awk vs grep eller kutt
ubrukelig cat's
og mange andre. Noen løsninger kan være mer robust, mens andre bare ser bra ut.

Så ikke forkleine stakkars lille awk - det tjener gode formål for enkelte database problemer.
Closed Thread

Hugseliste

Tags
awk, fil, grep eller, lese, mellomrom, skrive

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 12:11.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0