Strona 1 z 1

[BASH] jak usunąć ukryte znaki z pliku

: 08 sty 2014, 19:25
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

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

: 08 sty 2014, 20:40
autor: marcin1982

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

: 08 sty 2014, 20:47
autor: Mały 1
Napisz, co chcesz otrzymać na wyjściu. Tak będzie prościej.

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

: 08 sty 2014, 21:18
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

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

: 08 sty 2014, 22:01
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

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

: 10 sty 2014, 18:40
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