![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
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 |
|
||||
|
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 |
|
|||||
|
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. |