![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
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 |
|
||||
|
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 |
|
|||||
|
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. |
![]() |
| Hugseliste |
| Tags |
| awk, fil, grep eller, lese, mellomrom, skrive |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|