Bash script để loại bỏ ngắt dòng?


9

Tôi cần một tập lệnh nhập vào một tập tin và lặp lại nội dung của nó với các ngắt dòng bị loại bỏ - "từ được gói" để nói.

Tôi đã thử:

#!/bin/bash
find $HOME '$1' | while read line; do echo "${line}"; done

nhưng nó chỉ trả về không có gì.

Câu trả lời:


18

Hãy thử làm điều này:

echo $(cat $1)

1
Vui mừng tôi có thể giúp bạn tìm ra một trong nhiều cách để đến đó, nhưng hãy thử Googling một chút nữa vào lần tới. Đây là những gì tôi nhận được là kết quả thứ hai nảy lên bằng cách sử dụng từ khóa bash, line, end, remove.
gertvdijk

@gertvdijk đã nhiều năm trôi qua, và câu hỏi này là những gì tôi nhận được khi kết quả đầu tiên xuất hiện bằng cách sử dụng các từ khóa tương tự bây giờ :)
Jorge Suárez de Lis

cách không theo kịch bản / cmdline làecho `cat some_file.ext`
nmz787

7

Tôi tìm thấy câu trả lời có liên quan này trong stackoverflow:

/programming/1251999/sed-how-can-i-replace-a-newline-n

Cách nhanh nhất dường như là sử dụng tr:

tr '\n' ' ' </your/file

hoặc cho ví dụ của bạn:

cat `find $HOME '$1"` | tr '\n' ' '

Để tìm hiểu thêm về trlệnh làm, tất nhiên , man tr.

Trình xử lý stackoverflow chứa các cách để thực hiện điều này với sed (sẽ là lựa chọn đầu tiên của tôi, nhưng sed rất định hướng theo dòng và khiến nó không diễn giải ngắt dòng vì các dấu phân cách trường là phức tạp) và cách sử dụng đọc và bash, gần với tiếp cận ban đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.