shell replace whitespace

Sekcia: Programovanie 27.10.2010 | 22:44
Martino19   Návštevník
Ahojte,

hladam moznost ako nahradit v texte biele znaky novym riadkom, tak aby:
Ak je vedla seba viac bielych znakov, nahradi iba ten posledny novym riadkom

pre uplne pochopenie, uvediem zapis v php
$text = mb_eregi_replace("(\s)+\s", "\\1\n", $text);
\s = whitespace

ide mi vlastne o to, preniest urcite znaky z patternu do replace, tak ako som to urobil vo fcii vyssie pomocou \\1
prikazom tr sa take nieco neda, premyslal som ze pomocou awk, ale nenasiel som riesenie ani tu

Dakujem za pomoc
    • Re: shell replace whitespace 27.10.2010 | 23:50
      Avatar bedňa LegacyIce-antiX  Administrátor
      sed 's/[\t ]/\n/g' text.txt > text2.txt
      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
      • Re: shell replace whitespace 28.10.2010 | 00:59
        martino19   Návštevník
        tento script mi znak "t" a medzeru nahradi znakom "n"
    • Re: shell replace whitespace 28.10.2010 | 01:56
      iwtu   Návštevník
      Vela verzi sed neroznonava \t ako tabulator. Tak namiesto stisni tabulator :-)
      #!/bin/sh
      cat "$1" | sed 's/[ *+ ]*/\n/g'

      kde * predstavuje stlacenie medzery a + tabulatoru. Ako prvy parameter sa predpoklada vstupny subor

      • Re: shell replace whitespace 28.10.2010 | 01:58
        iwtu   Návštevník
        Pardon, blbe znacenie... Stisnutie tabulatoru predstavuje iba prva *. Druha je uz ridna hviezdicka. Dalej nemaju byt medzi [] --samo ich tam dalo
      • Re: shell replace whitespace 28.10.2010 | 02:40
        martino19   Návštevník
        Dakuje za radu, no stale nahradza medzeru znakom "n"
        Je asi probelm s tym, ze nerozpozna znak \n ako novy riadok
        • Re: shell replace whitespace 28.10.2010 | 10:07
          Avatar bedňa LegacyIce-antiX  Administrátor
          Daj tam dvojité úvodzovky.
          sed "s/[\t ]/\n/g" text.txt > text2.txt
          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
          • Re: shell replace whitespace 28.10.2010 | 10:16
            Avatar martino19   Používateľ
            stale dava namiesto medzere znak "n"

            este by som rad dodal, ze moj problem nie je nahradit medzery novym riadkom, to urobim aj pomocou tr tr -s '[:space:]' '\n'
            ja by som chcel nahradit iba poslednu medzeru, tzn. ak su vedla seba 3 medzery, nahradi iba tu tretiu za novy riadok
            • Re: shell replace whitespace 28.10.2010 | 13:54
              Avatar samox86 arch, debian  Administrátor
              sed -e 's|[[:space:]]*[[:space:]]|\n|g' text.txt
              lnx.sk - virtualne servery; Lnx@Lnx.sk
              • Re: shell replace whitespace 28.10.2010 | 14:07
                Avatar martino19   Používateľ
                stale dava namiesto medzere znak "n"

                Vam to funguje?
                • Re: shell replace whitespace 28.10.2010 | 14:25
                  Avatar samox86 arch, debian  Administrátor
                  [samox86@lnx ~]$ echo "asdfsdgs dfxhgfdh dshgfdh sdrhfh" | sed -e 's|[[:space:]]*[[:space:]]|\n|g'
                  asdfsdgs
                  dfxhgfdh
                  dshgfdh
                  sdrhfh
                  [samox86@lnx ~]$


                  ano, funguje. inak by som to nepastoval :-)
                  lnx.sk - virtualne servery; Lnx@Lnx.sk
                  • Re: shell replace whitespace 28.10.2010 | 15:30
                    Avatar martino19   Používateľ
                    hm no mne nebere znak "\n", nechape ze to je novy riadok

                    cez awk by mozno islo riesenie, ach
                • Re: shell replace whitespace 28.10.2010 | 15:30
                  Avatar bedňa LegacyIce-antiX  Administrátor
                  Mne tiež funguje čo som ti poslal ja, čo to máš za distro kua :)
                  Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                  • Re: shell replace whitespace 28.10.2010 | 15:35
                    Avatar martino19   Používateľ
                    FreeBSD
                    • Re: shell replace whitespace 28.10.2010 | 19:01
                      Avatar bedňa LegacyIce-antiX  Administrátor
                      A sme doma :)
                      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                      • Re: shell replace whitespace 28.10.2010 | 22:02
                        Avatar martino19   Používateľ
                        FreeBSD neposlucha?
                        • Re: shell replace whitespace 28.10.2010 | 22:34
                          Avatar bedňa LegacyIce-antiX  Administrátor
                          Ako vidíš sú tu rozdiely. Nám to ide tebe nie, škoda.
                          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org