2010-10-14 8 views
9

tôi nhận được một số tệp có tên bắt đầu là eg_. và chỉ có mỗi chứa một dòng đơnbash cat nhiều tệp nội dung vào một chuỗi không có dòng mới

eg_01.txt: @china: 129.00

eg_02.txt @uk: 219,98

eg_03.txt @USA: 341,90

.. ....

tôi đang mong muốn đưa chúng vào một dòng duy nhất để gửi bằng URL như: @china: [email protected]: [email protected]: 341.90

tôi sử dụng vang cat eg_*

nó cho tôi cái nhìn đầu ra như một chuỗi, nhưng nó thực sự có chứa dòng mới: "@china: 129.00

@uk: 219,98 @USA: 341,90"

là có cách nào khác tôi có thể xây dựng chuỗi mà dự kiến ​​và thoát khỏi dòng mới và thậm chí cả không gian? chỉ là mèo đủ để làm điều này?

cảm ơn trước

+0

Related: http://stackoverflow.com/questions/8739427/bash-add-string-to-the-end-of-the-file-without-line-break – redolent

Trả lời

17

Bạn có thể luôn ống nó để tr

tr "\n" " " 

Đó loại bỏ tất cả các dòng mới trên stdin và thay thế chúng với không gian

EDIT: theo đề nghị của Bart Sas, bạn cũng có thể xóa các dòng mới bằng tr -d

tr -d "\n" 

(lưu ý: chỉ cần chỉ định một chuỗi rỗng để tr cho đối số thứ hai sẽ không làm)

+2

Nếu bạn không muốn khoảng cách giữa các chuỗi bạn có thể sử dụng tr -d '\ n' để thay thế. –

+0

cảm ơn bạn rất nhiều mèo eg_ * | tr-'\ n' đã thực hiện thủ thuật – user271785

+0

Lưu ý cho một số lượng rất nhỏ những người sẽ có tệp với thuật ngữ dòng Windows: "\ r \ n" sẽ là chuỗi được sử dụng. –

1

Chỉ sử dụng một lệnh

url=$(awk '{printf "%s",$0}' eg*) 
1

Trong Perl, bạn muốn làm điều đó như thế này:

perl -pe'chomp' eg*.txt 

-p nói "vòng qua tệp đầu vào và thực hiện bất kỳ mã nào được chỉ định bởi công tắc -e. Các chomp trong Perl nói "Hủy bỏ bất kỳ đường dây mới trailing."