[+] bash, umieszczenie ci

Potrzebujesz pomocy z C, C++, perl, python, itp.
puntigamer
Posty: 23
Rejestracja: 05 lutego 2010, 16:41

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

Post 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.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

awk
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post 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:~$
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post 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


puntigamer
Posty: 23
Rejestracja: 05 lutego 2010, 16:41

Post autor: puntigamer »

Kod: Zaznacz cały

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

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