The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



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.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
behandlingen textfil rad för rad MizzGail Shell-programmering och Skript 6 04-14-2008 07:58
Rad för rad fil behandlingen ... och mer! ProFiction Shell-programmering och Skript 6 07-26-2007 12:32
Läsa rad för rad från en fil tej.buch Shell-programmering och Skript 2 01-23-2006 02:50
sed inte matar sista raden i indatafilen 2reperry Shell-programmering och Skript 3 12-16-2005 12:51
Läsa rad för rad från filen. akpopa UNIX for Dummies Frågor & 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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 07-17-2008
Darkness Fisk Darkness Fish is offline
Registered User
  
 

Join Date: Jul 2008
Inlägg: 2
Question Problem med att läsa filen linje för linje, och utmatningen till en ny fil

Hi everyone. Jag inser att detta är nog lite av en noob fråga, men jag är faktiskt en C # utvecklare som arbetar på ett äldre system, och kan inte minnas mycket Unix.

Jag vill läsa från en pipa-delimeted fil som formaterad så här:

IDNo | PRODUKT | Namn | Gata Ort postnummer | etc | etc | etc | etc
IDNo | PRODUKT | Namn | Gata Ort postnummer | etc | etc | etc | etc
IDNo | PRODUKT | Namn | Gata Ort postnummer | etc | etc | etc | etc

Jag vill kopiera varje rad till en annan fil, beroende på vilken produkt som finns i en strängvariabel jag hålla i minnet: "prod1 | prod2 | prod3" ($ produkter i exemplet nedan)

Därför var jag försökte:

för line in `cat $ temp_dir / $ filename | awk '(print $ 0)'"
göra
prod \u003d `echo" $ line "| awk 'BEGIN (FS \u003d"|"} (print $ 2)'`
valid_prod \u003d `echo $ produkter | grep" $ Prod "`
if [-n "$ valid_prod"]; sedan
echo "$ line">> $ new_file.txt
fi
gjord

Men denna linje variabel tycks skilja baserad på utrymmen, skapa ny fil som:

IDNo | PRODUKT | Namn | Street
stad
Postnummer | etc | etc | etc | etc

Finns det något sätt jag kan passera varje rad igenom som en enda parameter, oberoende av utrymmen?

Någon hjälp är hjälp uppskattas,
Dave
  #2 (permalänk)  
Old 07-17-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
Modérateur
  
 

Join Date: Dec 2007
Ort: Home av 17-Temne världen mästare Boston Celtics
Inlägg: 1311
Wink En annan strategi (om än obeprövade)


Kod:
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

Ibland blir jag så förvirrad att använda "och" därför jag föredrar ovannämnda metod.
  #3 (permalänk)  
Old 07-17-2008
TinWalrus TinWalrus is offline
Registered User
  
 

Join Date: maj 2007
Inlägg: 35
IFS

Du kan manipulera IFS (inre fält separator) - som ett exempel - eftersom go.dat innehåller rader med mellanslag

# Skapa matrisen, utan att manipulera IFS kommer utrymmen bryta kedjan
#
SET-poster $ (cat go.dat)
för linje i "$ (linjer [@]}"; göra
echo "" $ line ' "
gjord

# Skapa matrisen, men först ändra IFS (som den tillbaka - mycket viktigt)
# Efter matrisen är inställt
#
oIFS \u003d $ IFS
IFS \u003d $ (IFS # #?)
SET-poster $ (cat go.dat)
IFS \u003d $ oIFS

för linje i "$ (linjer [@]}"; göra
echo "" $ line ' "
gjord


# # # Go.dat # # #
IDNo en | PRODUKT | Namn | Gata Ort postnummer | etc | etc | etc | etc
IDNo b | PRODUKT | Namn | Gata Ort postnummer | etc | etc | etc | etc
IDNo c | PRODUKT | Namn | Gata Ort postnummer | etc | etc | etc | etc

# # # End go.dat # # #


Jag inser att det inte hjälper ditt problem (mörker fisk redan besvarats) så jag tänkte att jag skulle kasta min ,02 ungefär IFS - eftersom jag har blivit biten av att det tidigare - och det är praktiskt ganska ofta
  #4 (permalänk)  
Old 07-18-2008
Darkness Fisk Darkness Fish is offline
Registered User
  
 

Join Date: Jul 2008
Inlägg: 2
Tack så mycket för hjälpen, båda två, det är mycket uppskattat.

Jag var vilse i en värld av slumpmässiga obegriplig awk-kommandon hittas via google.
  #5 (permalänk)  
Old 07-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
Modérateur
  
 

Join Date: Dec 2007
Ort: Home av 17-Temne världen mästare Boston Celtics
Inlägg: 1311
Cool I Unix finns ett nästan oändligt antal sätt att lösa saker

När du läser igenom detta forum, bör du få en smak av olika sätt att lösa ett problem. Det är frågor av
awk vs grep eller skära
useless katts
och många andra. Vissa lösningar kan vara mer robust, medan andra bara ser bra ut.

Så gör förringa inte stackars lilla awk - det tjänar bra, för vissa databas problem.
Closed Thread

Komihåglista

Taggar
awk, fil, grep eller, läsa, utrymmen, skriva

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




Alla tider är GMT -4. Klockan är nu 07:23.


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-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0