Strona 1 z 1

[+] bash, umieszczenie ciągów znaków w jednym wierszu

: 26 lipca 2011, 10:43
autor: puntigamer
Witam.
Mam pytanie o skrypt, który z jednego pliku pobierze ciągi znaków podzielone

Kod: Zaznacz cały

 '/n' 
i wpisze do drugiego pliku rozdzielając ciągi średnikiem.

Przykład:

Kod: Zaznacz cały

[email]test@domena.pl[/email]
[email]dom@domena.pl[/email]
[email]pies@domena.pl[/email]
Wynik:

Kod: Zaznacz cały

[email]test@domena.pl;dom@domena.pl;pies@domena.pl[/email]
Chodzi mi przede wszystkim o to, czego użyć do czytania pliku wiersz po wierszu.
Pozdrawiam.

: 26 lipca 2011, 11:45
autor: Bastian
awk

: 26 lipca 2011, 18:07
autor: grzesiek

Kod: Zaznacz cały

grzesiek@home:~$ echo -e "pogoda@mnie.denerwuje.jb\nraz@zimno.raz.cieplo.kw"
pogoda@mnie.denerwuje.jb
raz@zimno.raz.cieplo.kw
grzesiek@home:~$ echo -e "pogoda@mnie.denerwuje.jb\nraz@zimno.raz.cieplo.kw" | tr '\n' ';' 
pogoda@mnie.denerwuje.jb;raz@zimno.raz.cieplo.kw;grzesiek@home:~$

: 26 lipca 2011, 18:42
autor: DaVidoSS
Chodzi mi przede wszystkim o to, czego użyć do czytania pliku wiersz po wierszu.
Można to załatwić pętlą "while":

Kod: Zaznacz cały

              while read LINE 
                        do
                              polecenie wykonujące coś z każdym wierszem po kolei
                              polecenie2 wykonujące coś z każdym wierszem po kolei
                              ............
                              #jeżeli z jakichś powodów jakieś linie tekstu maja być potraktowane inaczej to użyjemy pętli  w pętli:
                                       if grep '@' $LINE ; then
                                                polecenie3
                                                ...............
                                                echo 'Ohohoho, w tej linii jest adres e-mail'
                                        else
                                                polecenie4
                                                ................
                                                echo 'W tej lini adresu e-mail nie ma'
                                        fi
                 done < plik wejścia
Dla celu który opisałeś możesz użyć oto taki skrypcik:

Kod: Zaznacz cały


#!/bin/bash

input=dupa.list
output=znowudupa.list
czarymary(){
        while read LINE
                do
                echo $LINE | tr '\n' ';'
        done < $input
         }
czarymary > $output



: 27 lipca 2011, 16:28
autor: puntigamer

Kod: Zaznacz cały

cat sour | tr '\n' ';' > dest
Działa.

grzesiek, dziękuję. Pozostałym Wam również :)