🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.hp-ux
7 messages
7 total messages Started by niepytajkto Fri, 20 Feb 2004 12:55
Problem ze skryptem
#4008
Author: niepytajkto
Date: Fri, 20 Feb 2004 12:55
40 lines
1334 bytes
Witam,
mam w pliku tekstowym(plik1.txt) dane ulozone w mniej wiecej taki sposob:

123
43
23
234

234
45
643
345

551
365
94
199
...
a chcialbym miec:

123 43  23  234
234 45  643 345
551 365 94  199
...
napisalem skrypt:


#!/bin/sh
cat plik1.txt | while read x y z w
do
   printf "%s\t%s\t%s\t%s\n" $x $y $z $w
done


no i nie dziala... dostaje to samo, co w pliku.
Za kazda pomoc bede wdzieczny.
Maciek

-- 
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: Problem ze skryptem
#4009
Author: Lucyna Witkowska
Date: Fri, 20 Feb 2004 13:42
32 lines
1388 bytes
niepytajkto@poczta.onet.pl <niepytajkto@poczta.onet.pl> wrote:
> a chcialbym miec:

> 123 43  23  234
> 234 45  643 345
> 551 365 94  199
> ...
> napisalem skrypt:


> #!/bin/sh
> cat plik1.txt | while read x y z w
> do
>    printf "%s\t%s\t%s\t%s\n" $x $y $z $w
> done


> no i nie dziala... dostaje to samo, co w pliku.

Np.
#!/bin/sh
while read x 
  read y 
  read z 
  read w
  read
do
   printf "%s\t%s\t%s\t%s\n" $x $y $z $w
done <plik1.txt

Pozdrowienia,
LW
Re: Problem ze skryptem
#4010
Author: Szejku
Date: Fri, 20 Feb 2004 16:40
43 lines
1887 bytes
> > a chcialbym miec:
>
> > 123 43  23  234
> > 234 45  643 345
> > 551 365 94  199
> > ...
> > napisalem skrypt:
>
>
> > #!/bin/sh
> > cat plik1.txt | while read x y z w
> > do
> >    printf "%s\t%s\t%s\t%s\n" $x $y $z $w
> > done
>
>
> > no i nie dziala... dostaje to samo, co w pliku.
>
> Np.
> #!/bin/sh
> while read x
>   read y
>   read z
>   read w
>   read
> do
>    printf "%s\t%s\t%s\t%s\n" $x $y $z $w
> done <plik1.txt
>
> Pozdrowienia,
> LW
Dziekuje,
a dlaczego, jezeli w mojej wersji nie dawalem znaku "\n", to wyrzucal
wszystko "szeregowo" ?
I jeszcze jedno pytanko formalne, jesli mozna - gdybym napisal:
while read x y z w < plik1.txt
do
...
done
to tylko zmienna w bylaby wczytywana z plik1.txt, a reszta bylaby
wprowadzana z stdin??
Pozdrawiam,
Maciek
Re: Problem ze skryptem
#4011
Author: Piotr KUCHARSKI
Date: Fri, 20 Feb 2004 16:56
22 lines
1339 bytes
Szejku <niepytajkto@poczta.onet.pl> wrote:
> a dlaczego, jezeli w mojej wersji nie dawalem znaku "\n", to wyrzucal
> wszystko "szeregowo" ?

man read

DESCRIPTION
     The read utility will  read  a  single  line  from  standard
     input.
     [...]
     The line will be split into fields  as  in  the  shell;  the
     first  field will be assigned to the first variable var, the
     second field to the second variable var, and so  forth.

Czego nie rozumiesz w manualu?

p.

-- 
http://nerdquiz.sgh.waw.pl/ -- polska wersja quizu dla nerdów.
http://freedns.sgh.waw.pl/ -- bezpłatny serwis DNS.
http://42.pl/url/ -- skracacz URL-i.
Re: Problem ze skryptem
#4012
Author: Szejku
Date: Fri, 20 Feb 2004 17:32
55 lines
2293 bytes
Użytkownik "Piotr KUCHARSKI" <chopin@sgh.waw.pl> napisał w wiadomości
news:c15e81$nkp$1@absolut.sgh.waw.pl...
> Szejku <niepytajkto@poczta.onet.pl> wrote:
> > a dlaczego, jezeli w mojej wersji nie dawalem znaku "\n", to wyrzucal
> > wszystko "szeregowo" ?
>
> man read
>
> DESCRIPTION
>      The read utility will  read  a  single  line  from  standard
>      input.
>      [...]
>      The line will be split into fields  as  in  the  shell;  the
>      first  field will be assigned to the first variable var, the
>      second field to the second variable var, and so  forth.
>
> Czego nie rozumiesz w manualu?
>
> p.
np. tego, ze gdy zrobilem
cat plik1.txt | while read x y z w
    do
        printf("%s\t%s\t%s\t%s") $x $y $z $w
    done
to dostawalem:
123    43     23    234234    45    643    345 .....
a jak zrobilem:
cat plik1.txt | while read x y z w
    do
        printf("%s\t%s\t%s\t%s\n") $x $y $z $w
    done
to dostalem:
123
43
23
234

234
45
643
345

551
365
94
199
a myslalem, ze dostane:
123    43    23    234
234    45    643    345
551    365    94    199
Nie rozumiem, dlaczego wstawienie "\n" tak drastycznie zmienilo postac
wyjsciowa danych.
Pozdrawiam,
Maciek
Re: Problem ze skryptem
#4013
Author: Piotr KUCHARSKI
Date: Fri, 20 Feb 2004 17:48
39 lines
2042 bytes
Szejku <niepytajkto@poczta.onet.pl> wrote:
>>      The read utility will  read  a  single  line  from  standard
>>      input.

Na polski: jeden read -- jedna linia z pliku.

>>      The line will be split into fields  as  in  the  shell;  the
>>      first  field will be assigned to the first variable var, the
>>      second field to the second variable var, and so  forth.

Na polski: wartości z danej linii będzą przypisywane kolejnym
zmiennym (podanym po read).

> cat plik1.txt | while read x y z w
>    do
>        printf("%s\t%s\t%s\t%s") $x $y $z $w
>    done
> to dostawalem:
> 123    43     23    234234    45    643    345 .....

No to patrz, masz w pliku wejściowym linie:
123
43
czytasz linie po jednej (bo jeden read). W pierwszym obrocie pętli
x=123, y="", z="", w="". I to jest wypisywane. A potem drugi
obrót pętli. tym razem x=43, y, z i w dalej puste. Ale między
jednym a drugim obrotem pętli nie było żadnego '\n'.

> Nie rozumiem, dlaczego wstawienie "\n" tak drastycznie zmienilo postac
> wyjsciowa danych.

Bo nie rozumiesz, co jest w manualu napisane. :-)

p.

-- 
http://nerdquiz.sgh.waw.pl/ -- polska wersja quizu dla nerdów.
http://freedns.sgh.waw.pl/ -- bezpłatny serwis DNS.
http://42.pl/url/ -- skracacz URL-i.
Re: Problem ze skryptem
#4014
Author: Szejku
Date: Fri, 20 Feb 2004 18:10
25 lines
1875 bytes
> No to patrz, masz w pliku wejściowym linie:
> 123
> 43
> czytasz linie po jednej (bo jeden read). W pierwszym obrocie pętli
> x=123, y="", z="", w="". I to jest wypisywane. A potem drugi
> obrót pętli. tym razem x=43, y, z i w dalej puste. Ale między
> jednym a drugim obrotem pętli nie było żadnego '\n'.
>
> > Nie rozumiem, dlaczego wstawienie "\n" tak drastycznie zmienilo postac
> > wyjsciowa danych.
>
> Bo nie rozumiesz, co jest w manualu napisane. :-)
>
> p.
Fakt, chcialem pojechac troche na skroty, ale sie nie udalo, nie przyjrzalem
sie manualowi, a przykladowi z ksiazki "UNIX Administracja Systemu"
"...
cat file.dat | while read x y z
do echo $x $y $z; done
a b c
d e f
...."
strona 715... :-((((
Pozdrawiam,
Maciek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads