Làm cách nào để xóa Ctrl-M khỏi các tệp không có dos2unix, perl, tr và sed?


9

Giả sử bạn đang làm việc trên một máy chủ Unix rất cũ ở đâu dos2unix, perl, tr, và sedkhông có mặt. Làm thế nào bạn có thể chuyển đổi các tập tin từ dos sang định dạng unix ?


sed được phép?
elmarco

@elmarco: không :(
Hemant

9
Một máy chủ unix phải bao nhiêu tuổi để không có trsed? sedđã cũ ........ iirc,
xenoterracide

1
Sẽ exhoặc edcó sẵn trên một hệ thống như vậy? Tôi sẽ không gọi nó là unix nếu không có trhoặc sed.
MattBianco

3
Không sed? Có thật không!? Không quan tâm, hệ thống là gì? Như Gilles và MattBianco chỉ ra, có lẽ nó vẫn sẽ có edít nhất.
Mikel

Câu trả lời:


12

Tôi nghĩ rằng bạn đang đề cập đến việc loại bỏ caret-M ở cuối dòng. Bạn có thể sử dụng tìm kiếm và thay thế trong vi để làm điều này.

Trong vi tôi thường làm: (trong đó "^" đại diện cho CTRL):

:%s/^V^M//g

Hiển thị trên màn hình như:

:%s/^M//g

cảm ơn đã làm việc :). Tôi nghĩ rằng nó là một giải pháp rất di động.
Hemant

4
Bạn cũng có thể sử dụng sed để thực hiện điều tương tự với việc phải vim tệp: sed -e '% s / ^ V ^ M // g' tên tệp Điều đó cũng sẽ hiển thị trên màn hình dưới dạng sed e '% s / ^ M // g 'tên tệp Nói chung, nếu bạn có thể tìm kiếm / thay thế nó trong vim, lệnh gần như giống nhau trong sed.
gabe.

2
@gabe: giải pháp sed thực sự thậm chí còn dễ mang theo hơn +1 :)
wzzrd

@wzzrd sedvicả hai đều được chỉ định bởi POSIXvilệnh đó không sử dụng bất kỳ tiện ích mở rộng Vim nào.
tự đại diện

@jjclarkson nghĩa là gì ^Vvà '^ M' nghĩa là gì?
cokedude

6

Một máy chủ không có trhoặc sedsẽ phải thực sự cũ hoặc thiếu một số lệnh cơ bản. Hy vọng edlà có; nó đã tồn tại trong phiên bản đầu tiên của Unix .

ed /path/to/file
1,$s/^V^M$//
w
q

trong đó ^V^Mcó nghĩa là gõ Ctrl+ Vrồi Ctrl+ M(để nhập nguồn cấp dữ liệu bằng chữ). Nếu bạn biết rằng tất cả các dòng kết thúc bằng CR LF, bạn có thể sử dụng 1,$s/.$//thay thế (loại bỏ bừa bãi ký tự cuối cùng trên mỗi dòng).

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.