Cách nhanh nhất và dễ nhất tôi biết để giải quyết vấn đề này:
Khi chúng tôi muốn thay thế ký tự dòng mới \n
bằng dấu cách :
xargs < file
xargs
có giới hạn riêng về số lượng ký tự trên mỗi dòng và số lượng tất cả các ký tự được kết hợp, nhưng chúng ta có thể tăng chúng. Chi tiết có thể được tìm thấy bằng cách chạy lệnh này: xargs --show-limits
và tất nhiên trong hướng dẫn:man xargs
Khi chúng ta muốn thay thế một ký tự bằng một ký tự khác chính xác :
tr '\n' ' ' < file
Khi chúng tôi muốn thay thế một ký tự bằng nhiều ký tự :
tr '\n' '~' < file | sed s/~/many_characters/g
Đầu tiên, chúng tôi thay thế các ký tự dòng mới \n
cho ~
dấu ngã (hoặc chọn một ký tự duy nhất khác không có trong văn bản), sau đó chúng tôi thay thế các ký tự dấu ngã bằng bất kỳ ký tự nào khác ( many_characters
) và chúng tôi làm điều đó cho mỗi dấu ngã (cờ g
).
sed
tập lệnh của mình vào dấu ngoặc đơn để Bash không gây rối với nó (vìsed s/\n/ /g
các cuộc gọised
có hai đối số, cụ thể làs/n/
và/g
); (2) kể từ khi bạn muốn đầu ra củacat file | grep pattern
là đầu vào đểsed
, chứ không phải tranh cãi đểsed
, bạn cần phải loại bỏxargs
; và (3) không cầncat
ở đây, vìgrep
có thể lấy tên tệp làm đối số thứ hai. Vì vậy, bạn nên đã cố gắnggrep pattern file | sed 's/\n/ /g'
. (Trong trường hợp này, nó sẽ không hoạt động, vì những lý do được đưa ra ở liên kết trên, nhưng bây giờ bạn biết cho tương lai.)