[bash] wynik sed zamiast EOL daje spacje

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
PiKey
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 06 sty 2008, 20:30
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

[bash] wynik sed zamiast EOL daje spacje

Post autor: PiKey »

Witam, w bashu nie jestem najlepszy... niestety :) No i musiałem natknąć się na problem

Mam plik, przykładowo:

Kod: Zaznacz cały

variable "JakasDana"
innaZmienna "cos cos"

// jakis komentarz
cos "jakasWartosc"
Z pomocą googla wydziobałem sobie taką komendę, do zmiany linii pliku no i ponownego zapisania wyniku do tego samego pliku (zwykla podmiana danych):
echo `sed \'s/innaZmienna "cos cos"/innaZmienna "nowaDana"/g\' /media/disk/plik.txt` > /media/disk/plik.txt
Problemem jest, że powstaje plik, w którym zamiast enterów na końcach linii pojawiają się spacje
variable "JakasDana" innaZmienna "nowaDana" // jakis komentarz
Co na to zaradzić?
Macie jakieś lepsze pomysły do podmiany linijki w pliku? :wall:
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [bash] wynik sed zamiast EOL daje spacje

Post autor: otokan »

Porównaj sobie

Kod: Zaznacz cały

 echo $(sed ...) 
z

Kod: Zaznacz cały

 echo "$(sed ...)" 
i zobacz sekcję 'word splitting' w manualu basha.

A tak w ogóle to Twoje zadanie należy rozwiązać

Kod: Zaznacz cały

sed -i.bak -e 's/.../.../'  plik
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości