2013-06-20 16 views
5

Mam plik tekstowy, w którym każda linia jest jedno słowo kodowane base64 osobno. Teraz chcę to rozszyfrować. Próbuję użyć linii poleceń base64, ale otrzymuję wszystkie słowa w jednym wierszu, chcę jeden na linię.potokuj każdą linię pliku do komendy

Na przykład, mój plik jest:

Y2F0Cg== 
ZG9nCg== 
aG91c2UK 

chcę w wyniku:

dog 
cat 
house 

Ale ja dostaję:

dogcathouse 

myślę xargs mógł pomóc, ale Nie rozumiem.

+0

Możesz chcieć zmienić tytuł na pytanie, ponieważ nie jest w rzeczywistości o zapętlenie poprzez plik. – l0b0

+0

@ l0b0: Nie sądzę. ponieważ OP uważał, że wymaga pętli. Jednak dostępne było lepsze rozwiązanie. – anishsane

Odpowiedz

9

Zastosowanie base64 --decode:

$ while read line; do echo $line | base64 --decode; done < file 
cat 
dog 
house 

Uwaga: Usunąłem tę odpowiedź, bo myślałem, że jeden l0b0 za rozwiązać ten problem całkowicie. Ponieważ widzę, że osoba, która zadaje pytanie, nadal ma problemy, usunąłem wpis, aby sprawdzić, czy to rozwiązanie pomaga.

+2

Dzięki! Rozwiązałem mój problem. – tpcordeiro

3

To działa na mnie w base64 8.13:

base64 --decode test.txt 

Nie ma potrzeby, aby podzielić plik. Jakiej wersji używasz?

+0

Dobrze, pomyślałem, że konieczne jest zapętlenie pliku. – fedorqui

+2

Użyłem tego, ale nie zadziałało. Myślę, że to dlatego, że plik nie był w całości zakodowany w base64. W rzeczywistości każde słowo było kodowane osobno, a następnie zostało złożone w pliku. – tpcordeiro

0

Można używać Pythona na to (nie ma potrzeby czytać każdą linię):

python -m base64 -d foo.txt