eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Linuxowy skrypt pod Winda
Ilość wypowiedzi w tym wątku: 9

  • 1. Data: 2010-06-26 20:50:14
    Temat: Linuxowy skrypt pod Winda
    Od: "Boss Moss" <s...@g...pl>

    Witam.
    Czy ktos z szanownych kolegow potrafi mi pomoc w przelozeniu skryptu
    linuxowego:

    zawartosc mojplik.txt, separatory pol -> |

    pole1 | pole2 | pole3 | pole4 | pole5 | pole6 | pole7 | pole8 | pole9 |
    cat mojplik.txt | awk 'BEGIN { FS = "|" } ; { if ($7==1) print
    $1"|"$2"|"$3"|"$4 >"ggg.txt";}'

    na postac akceptowalna dla batcha pod Winde (korzystam z UnxUtils). Nie
    potrafie sobie poradzic z zamiana cudzyslowow. Pierwszy ' chyba na " ale co
    z tymi FS = "|" i reszta??? Chyba, ze znacie inna opcje w jaki sposob uzyc
    wartosci z 7-mego pola.

    Dana linia z mojplik.txt ma sie zapisywac do wynikowego pliku pod
    warunkiem, ze w polu 7 pojawi sie wartosc = 1 (srodowisko windows). Metoda
    dowolna byle by dzialalo np. w batchu.

    Z gory dzieki za ew. podpowiedzi!

    Boss Moss



  • 2. Data: 2010-06-26 21:12:39
    Temat: Re: Linuxowy skrypt pod Winda
    Od: Piotr Kulinski <p...@w...pl>

    Sat, 26 Jun 2010 22:50:14 +0200, na pl.comp.programming, Boss Moss
    napisał(a):

    > Witam.
    > Czy ktos z szanownych kolegow potrafi mi pomoc w przelozeniu skryptu
    > linuxowego:
    >
    > zawartosc mojplik.txt, separatory pol -> |
    >
    > pole1 | pole2 | pole3 | pole4 | pole5 | pole6 | pole7 | pole8 | pole9 |
    > cat mojplik.txt | awk 'BEGIN { FS = "|" } ; { if ($7==1) print
    > $1"|"$2"|"$3"|"$4 >"ggg.txt";}'
    >
    > na postac akceptowalna dla batcha pod Winde (korzystam z UnxUtils). Nie
    > potrafie sobie poradzic z zamiana cudzyslowow. Pierwszy ' chyba na " ale co
    > z tymi FS = "|" i reszta??? Chyba, ze znacie inna opcje w jaki sposob uzyc
    > wartosci z 7-mego pola.
    >
    > Dana linia z mojplik.txt ma sie zapisywac do wynikowego pliku pod
    > warunkiem, ze w polu 7 pojawi sie wartosc = 1 (srodowisko windows). Metoda
    > dowolna byle by dzialalo np. w batchu.
    >
    > Z gory dzieki za ew. podpowiedzi!
    >
    > Boss Moss

    for w batch-a, ma mozliwość cięcia pliku wejściowego wg zadanych
    separatorów, można pobierać wybrane pola i przetwarzać
    --
    pozdrawiam, GG i SkyPe w X-nagłówku posta, e-mail: zmień wpw na wp
    piotr


  • 3. Data: 2010-06-26 21:17:05
    Temat: Re: Linuxowy skrypt pod Winda
    Od: "Boss Moss" <s...@g...pl>

    > for w batch-a, ma mozliwość cięcia pliku wejściowego wg zadanych
    > separatorów, można pobierać wybrane pola i przetwarzać

    Dzieki za odpowiedz. Mozesz podac jakis przyklad? Przyznam szczerze, ze do
    tej pory paralem sie bardzo prostymi poleceniami. Niestety petli jeszcze nie
    mialem okazji uzywac... :/
    B.M.



  • 4. Data: 2010-06-26 21:56:44
    Temat: Re: Linuxowy skrypt pod Winda
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Boss Moss <s...@g...pl> napisał(a):
    > Dzieki za odpowiedz. Mozesz podac jakis przyklad? Przyznam szczerze, ze
    > do tej pory paralem sie bardzo prostymi poleceniami. Niestety petli
    > jeszcze nie mialem okazji uzywac... :/

    @echo off
    for /f "tokens=1-9 delims=|" %%i in (test.txt) do (
    if %%o==1 echo %%i %%j %%k %%l > ggg.txt
    )

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 3 days, 3 hours, 0 minutes and 27 seconds


  • 5. Data: 2010-06-26 22:38:39
    Temat: Re: Linuxowy skrypt pod Winda
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Grzegorz Niemirowski <g...@p...onet.pl> napisał(a):
    > @echo off
    > for /f "tokens=1-9 delims=|" %%i in (test.txt) do (
    > if %%o==1 echo %%i %%j %%k %%l > ggg.txt
    > )

    Zapomniałem o separatorach:
    @echo off
    for /f "tokens=1-9 delims=|" %%i in (test.txt) do (
    if %%o==1 echo %%i^|%%j^|%%k^|%%l > ggg.txt
    )

    Natomiast jeśli chcesz zrobić po nowoszesnemu to polecam powłokę PowerShell
    (jedna linijka):
    gc test.txt |? {$_.split("|")[6] -match "1"}|% {$a=$_.split("|");
    $a[0]+"|"+$a[1]+"|"+$a[2]+"|"+$a[3] > ggg.txt}

    Podany skrypt CMD jest wrażliwy na białe znaki, nie zadziała jeśli będzie
    np. | 1 | a nie |1|. Z kolei jednolinijkowiec PS nie jest na to wrażliwy i
    dopasowuje każdy string na pozycji 7 (6 licząc od 0) zawierający znak "1".

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 3 days, 3 hours, 35 minutes and 7 seconds


  • 6. Data: 2010-06-27 08:55:51
    Temat: Re: Linuxowy skrypt pod Winda
    Od: "Boss Moss" <s...@g...pl>

    > @echo off
    > for /f "tokens=1-9 delims=|" %%i in (test.txt) do (
    > if %%o==1 echo %%i^|%%j^|%%k^|%%l > ggg.txt
    > )

    Dzieki Grzegorzu, posunalem sie troche do przodu. Mam jeszcze jedno
    pytanie - jezeli szukam wartosci w stringu, np. w polu numer 1 - wartosci >=
    1,50 powinienem uzyc przelacznika /L w klauzuli for? Nie do konca mi to
    dziala:
    ""tokens=1-17 delims=|" was unexpected at this time."
    Probowalem poskladac zmienne z wszystkich pol - jest ich w pliku wsadowym
    17. Ale skladany string na wyjsciu ma ich tylko 10? Wystepuje tutaj jakies
    ograniczenie ilosci zmiennych w stringu? W jaki sposob mozna zrzucic do
    pliku wyjsciowego cala linie bez dzielenia jej na poszczegolen pola?

    Mam jeszcze jeden problem. W danych wejsciowych separatorem dziesietnym jest
    "." natomiast w moim systemie jest ",". Da sie w jakis prosty sposob
    zamienic te znaki w stringu przed operacja z kaluzula for, tak aby warunek
    >= 1,50 mogl byc spelniony?

    B.M.



  • 7. Data: 2010-06-27 10:17:07
    Temat: Re: Linuxowy skrypt pod Winda
    Od: Piotr Kulinski <p...@w...pl>

    Sun, 27 Jun 2010 10:55:51 +0200, na pl.comp.programming, Boss Moss
    napisał(a):

    >> @echo off
    >> for /f "tokens=1-9 delims=|" %%i in (test.txt) do (
    >> if %%o==1 echo %%i^|%%j^|%%k^|%%l > ggg.txt
    >> )
    >
    > Dzieki Grzegorzu, posunalem sie troche do przodu. Mam jeszcze jedno
    > pytanie - jezeli szukam wartosci w stringu, np. w polu numer 1 - wartosci >=
    > 1,50 powinienem uzyc przelacznika /L w klauzuli for? Nie do konca mi to
    > dziala:
    > ""tokens=1-17 delims=|" was unexpected at this time."
    > Probowalem poskladac zmienne z wszystkich pol - jest ich w pliku wsadowym
    > 17. Ale skladany string na wyjsciu ma ich tylko 10? Wystepuje tutaj jakies
    > ograniczenie ilosci zmiennych w stringu? W jaki sposob mozna zrzucic do
    > pliku wyjsciowego cala linie bez dzielenia jej na poszczegolen pola?
    >
    > Mam jeszcze jeden problem. W danych wejsciowych separatorem dziesietnym jest
    > "." natomiast w moim systemie jest ",". Da sie w jakis prosty sposob
    > zamienic te znaki w stringu przed operacja z kaluzula for, tak aby warunek
    > >= 1,50 mogl byc spelniony?
    >
    > B.M.

    to może przez test.txt wstępie przejechać sed-em, zmieniając '.' na ','
    dla klauzuli for for z tokenami nie wiem o ograniczeniach, natomiast dla
    samego batch-a, parametrów może być max 15, jeśli stosujesz więcej należy
    posługiwać się poleceniem shift, aby je przesuwać.
    --
    pozdrawiam, GG i SkyPe w X-nagłówku posta, e-mail: zmień wpw na wp
    piotr


  • 8. Data: 2010-06-27 11:41:55
    Temat: Re: Linuxowy skrypt pod Winda
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Boss Moss <s...@g...pl> napisał(a):
    > Dzieki Grzegorzu, posunalem sie troche do przodu. Mam jeszcze jedno
    > pytanie - jezeli szukam wartosci w stringu, np. w polu numer 1 -
    > wartosci >= 1,50 powinienem uzyc przelacznika /L w klauzuli for? Nie do
    > konca mi to dziala:
    > ""tokens=1-17 delims=|" was unexpected at this time."
    > Probowalem poskladac zmienne z wszystkich pol - jest ich w pliku wsadowym
    > 17. Ale skladany string na wyjsciu ma ich tylko 10? Wystepuje tutaj
    > jakies ograniczenie ilosci zmiennych w stringu? W jaki sposob mozna
    > zrzucic do pliku wyjsciowego cala linie bez dzielenia jej na
    > poszczegolen pola?
    > Mam jeszcze jeden problem. W danych wejsciowych separatorem dziesietnym
    > jest "." natomiast w moim systemie jest ",". Da sie w jakis prosty
    > sposob zamienic te znaki w stringu przed operacja z kaluzula for, tak
    > aby warunek
    >> = 1,50 mogl byc spelniony?
    > B.M.

    Tego niestety nie wiem. Skrypty CMD są dosyć prymitywne i ja bym sobie dał z
    nimi spokój i wziął się za PowerShell:
    gc test.txt |? {[float]$_.split("|")[6] -ge
    1.5}|%{[string]::join("|",$_.split("|")[0..3]) > ggg.txt}

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 3 days, 16 hours, 13 minutes and 37 seconds


  • 9. Data: 2010-06-27 17:20:05
    Temat: Re: Linuxowy skrypt pod Winda
    Od: "Boss Moss" <s...@g...pl>

    Serdecznie dziekuje kolegom za pomoc.
    B.M.


strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: