Làm cách nào để xóa khoảng trắng ở cuối dòng trong các tệp đã cho (nhiều hơn một)?


9

Tôi đã chán ngấy với những khoảng trống vô dụng trong các tệp nguồn mà tôi thậm chí đã cấu hình vim để hiển thị chúng.

Vấn đề là tôi rất thường xuyên (nếu không luôn luôn) phải đối phó với những không gian vô dụng với những người phát triển bạn tình của tôi.

Tôi chỉ muốn quét các tệp nguồn (được cung cấp một biểu thức chính quy) và xóa các khoảng trắng khỏi tất cả các tệp đã cho.

Tôi đã tìm kiếm trên web ("bash xóa khoảng trắng", v.v.) nhưng không tìm thấy thứ gì hữu ích.


2
Xóa khoảng trắng nào? Không có ví dụ về những gì bạn muốn xóa, tôi không thấy ai có thể giúp bạn. (Tôi đoán tr -d ' ' < file.fookhông chính xác những gì bạn đang tìm kiếm.)
Mat

Làm thế nào bạn có thể lập trình cho sự khác biệt giữa khoảng trắng vô dụng và khoảng trắng hữu ích? BTW: Bạn có thể sử dụng một vòng lặp for và mv và sed và thu gọn khoảng trắng;
bsd

Bạn cũng có thể xóa khoảng trắng theo sau khi lưu tệp trong vim (tiết kiệm cho bạn sự cố để chạy lại lệnh này sau khi bạn chỉnh sửa nội dung nào đó): unix.stackexchange.com/questions/75430/ Thẻ
Lucas

Câu trả lời:


8

Nếu bằng khoảng trắng vô dụng, bạn có nghĩa là khoảng trắng ở cuối dòng, điều này sẽ hoạt động trên các hệ thống GNU:

find -name '*.c' -print0 | xargs -r0 sed -e 's/[[:blank:]]\+$//' -i

(thay thế *.cbằng bất cứ thứ gì mà tệp nguồn của bạn khớp)


Tôi đã thay đổi tiêu đề, cảm ơn bạn rất nhiều vì câu trả lời của bạn. Ai đó đã bỏ phiếu xuống vì, có lẽ anh ta nghĩ nó thật đơn giản, rằng không ai nên hỏi câu hỏi như vậy ;^). Cám ơn bạn một lần nữa.
Olivier Pons

1

Đây là một vấn đề thường xuyên!

perl -i -pe 's/\s+\n/\n/'  ./*.c

(điều này cũng loại bỏ ' \r\n')

Tôi thường sử dụng một phiên bản "nrs" phức tạp hơn một chút (không có khoảng trống thừa):

#!/usr/bin/perl -pi
s/\h*(\r\n|\n|\r)/\n/g;                 ## normalize \n (DOS, MAC)
s/^(\xFF\xFE|\xFE\xFF|\xEF\xBB\xBF)//;  ## remove BOM !

cài đặt nó: chmod 755 nrs; cp nrs ~/bin; (hoặc tương tự)

Và sử dụng: nrs ./*.c

Đừng sử dụng nó trong các tệp nhị phân!



0

Để tránh chạm vào các tệp đã ổn, với các công cụ GNU:

grep -rlZ --binary-files=without-match --include='*.c' '\s$' . |
  xargs -r0 sed -i 's/\s+$//'
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.