Làm cách nào tôi có thể thay thế tất cả các dòng mới bằng không gian ngoại trừ dòng mới nhất. Tôi có thể thay thế tất cả dòng mới vào không gian bằng cách sử dụng tr
nhưng làm thế nào tôi có thể làm điều đó với một số ngoại lệ?
Làm cách nào tôi có thể thay thế tất cả các dòng mới bằng không gian ngoại trừ dòng mới nhất. Tôi có thể thay thế tất cả dòng mới vào không gian bằng cách sử dụng tr
nhưng làm thế nào tôi có thể làm điều đó với một số ngoại lệ?
Câu trả lời:
Thực hiện lại ý tưởng của vonbrand trong Perl, với điều kiện tệp này đủ nhỏ:
perl -p00e 's/\n(?!\Z)/ /g' your_file
Điều này làm việc cho tôi.
tr '\n' ' ' < file_with_new_line | sed 's/\ $//g' > file_with_space
tr
Lệnh của bạn thay thế tất cả các dòng mới bằng dấu cách và sed
lệnh của bạn sẽ xóa khoảng trắng cuối cùng. Điều này dẫn đến một tệp không có dòng mới cuối cùng và do đó không phải là câu hỏi đang yêu cầu. Nhân tiện, không có điểm int sử dụng g
trong sed
lệnh. Vì bạn đang sử dụng $
, nó chỉ có thể khớp ở cuối, điều g
này là vô nghĩa. Bạn cũng không cần phải thoát khỏi không gian, `` cũng không có gì khác biệt.
-s
và-d
có vẻ như được thực hiện cho trường hợp này.