[BASH] jak usunąć ukryte znaki z pliku

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
adamski9000
Sędziwy Jeż
Sędziwy Jeż
Posty: 59
Rejestracja: 18 lis 2012, 16:05
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

[BASH] jak usunąć ukryte znaki z pliku

Post autor: adamski9000 »

Witam

Natknąłem się na problem z ukrytymi znakami w pliku i mimo wielu różnych prób nadal nie mogę dojść w czym problem.
Jeden z wierszy, w tym wypadku 3 - łamie się do nowej lini ( w miejscu przejścia do nowej linii był znak ł ). Próbowałem usuwać znak \n \t \r z ciągu za pomocą sed, tr, awk lecz bez rezultatu. Na wyjściu dostaje jakieś cuda. Poza tym z pdrugiej kolumny usuwany jest automatycznie znak \ mimo iż nie powinno to mieć miejsca. Proszę o pomoc w rozwiązaniu tej zagadki.

Plik z poniższymi wierszami:

script.responsive.js | C:\Szablony\szablon_detkom
prezentacja_detkom.mp4 | C:\FFOutput
artyku
y.html | C:\Szablony\szablon_detkom_htm
style.ie7.css | C:\Szablony\szablon_detkom


Zastosowany skrypt:

Kod: Zaznacz cały

	
while IFS='|' read nazwa_pliku oryginalna_sciezka sciezka_w_koszu
do
		nazwa_pliku=`echo $nazwa_pliku | tr -cd 'abcdefghijklłmnoprstuwxyzv\._1234567890'`
		echo "${nazwa_pliku} - ${oryginalna_sciezka}"
		
done < "${PATH_RAPORT}/raport_details_Trash_admin.txt
Na wyjściu:
script.responsive.js - C:Szablonyszablon_detkom
prezentacja_detkom.mp4 - C:FFOutput
artyku -
-
style.ie7.css - C:Szablonyszablon_detkom
Lenovo G580, Ubuntu 14.04, Detektyw Komputerowy dla Windows - OPEN SOURCE
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: [BASH] jak usunąć ukryte znaki z pliku

Post autor: Mały 1 »

Napisz, co chcesz otrzymać na wyjściu. Tak będzie prościej.
Awatar użytkownika
adamski9000
Sędziwy Jeż
Sędziwy Jeż
Posty: 59
Rejestracja: 18 lis 2012, 16:05
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Re: [BASH] jak usunąć ukryte znaki z pliku

Post autor: adamski9000 »

Linki powyzsze i inne przetestowałem. Niestety nie działa. Poza tym nie rozwiązuje to problemu znikających slashy \ z drugiej kolumny.

Na wyjściu chciałbym uzyskać:

script.responsive.js - C:\Szablony\szablon_detkom
prezentacja_detkom.mp4 - C:\FFOutput
artyku y.html - C:\Szablony\szablon_detkom_htm
style.ie7.css - C:\Szablony\szablon_detkom
Lenovo G580, Ubuntu 14.04, Detektyw Komputerowy dla Windows - OPEN SOURCE
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: [BASH] jak usunąć ukryte znaki z pliku

Post autor: Mały 1 »

Kod: Zaznacz cały

awk '{if(/artyku/) ORS=" "; sub(/\|/, "-"); print ; ORS="\n"}' plik
script.responsive.js - C:\Szablony\szablon_detkom 
prezentacja_detkom.mp4 - C:\FFOutput 
artyku y.html - C:\Szablony\szablon_detkom_htm 
style.ie7.css - C:\Szablony\szablon_detkom

Kod: Zaznacz cały

awk '{if(/artyku/) ORS=" "; sub(/\|/, "-"); print ; ORS="\n"}' plik
Awatar użytkownika
adamski9000
Sędziwy Jeż
Sędziwy Jeż
Posty: 59
Rejestracja: 18 lis 2012, 16:05
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Re: [BASH] jak usunąć ukryte znaki z pliku

Post autor: adamski9000 »

Ok dzięki. Teraz wyświetla poprawnie bez znaku nowego wiersza. Ale ma ktoś jakiś pomysł dlaczego usuwane są slasze ? Jest to dość kłopotliwe.

-- 10 sty 2014, o 18:57 --

Doszedłem do rozwiązania. READ musi miec parametr -r
czyli

Kod: Zaznacz cały

while IFS='|' read -r nazwa_pliku oryginalna_sciezka 
do
      echo "${nazwa_pliku} - ${oryginalna_sciezka}"   
done < "${PATH_RAPORT}/raport_details_Trash_admin.txt
Lenovo G580, Ubuntu 14.04, Detektyw Komputerowy dla Windows - OPEN SOURCE
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

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