2013-06-20 34 views
5

Tôi có một tệp văn bản mà mỗi dòng là một từ mã base64 riêng biệt. Bây giờ tôi muốn giải mã nó. Tôi đang cố gắng sử dụng dòng lệnh base64, nhưng tôi nhận được tất cả các từ chỉ trong một dòng, tôi muốn một từ trên mỗi dòng.đường ống mỗi dòng của một tập tin vào một lệnh

Ví dụ, tập tin của tôi là:

Y2F0Cg== 
ZG9nCg== 
aG91c2UK 

Tôi muốn kết quả:

dog 
cat 
house 

Nhưng tôi nhận được:

dogcathouse 

Tôi nghĩ xargs có thể giúp đỡ, nhưng Tôi không nhận được điểm.

+0

Bạn có thể muốn thay đổi tiêu đề của câu hỏi vì nó không thực sự về vòng lặp thông qua một tập tin. – l0b0

+0

@ l0b0: Tôi không nghĩ vậy. bởi vì OP nghĩ rằng nó được yêu cầu lặp lại. Tuy nhiên, có một giải pháp tốt hơn có sẵn. – anishsane

Trả lời

9

Sử dụng base64 --decode:

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

Lưu ý: Tôi đã xóa câu trả lời này bởi vì tôi nghĩ rằng một l0b0 của giải quyết vấn đề hoàn toàn. Khi tôi thấy người hỏi vẫn gặp sự cố, tôi hủy xóa bài đăng để xem giải pháp này có hữu ích hay không.

+2

Cảm ơn! Giải quyết vấn đề của tôi – tpcordeiro

3

này làm việc cho tôi trong base64 8.13:

base64 --decode test.txt 

Không cần phải tách các tập tin. Phiên bản bạn đang sử dụng?

+0

Tốt nhất, tôi nghĩ rằng nó là cần thiết để lặp qua các tập tin. – fedorqui

+2

Tôi đã sử dụng, nhưng không hoạt động. Tôi nghĩ rằng đó là bởi vì các tập tin đã không hoàn toàn base64 mã hóa. Trong thực tế, mỗi từ được mã hóa riêng biệt, và sau đó nó được đặt lại với nhau trong tập tin. – tpcordeiro

0

Bạn có thể sử dụng Python cho rằng (không cần đọc mỗi dòng):

python -m base64 -d foo.txt