Làm cách nào tôi có thể khiến grep sử dụng CRLF (chứ không phải LF) làm dòng mới?


1

Tôi cần grep thông qua một tệp trong đó không chỉ các dòng bị chấm dứt bởi CRLF, mà chúng còn có thể có một số LF trên mỗi dòng. Làm cách nào tôi có thể khiến grep phớt lờ các LF trừ khi có CR trước mặt họ? FYI, tôi đang sử dụng OS X, vì vậy sẽ rất hữu ích khi có hướng dẫn grep BSD.

Câu trả lời:


2

Tôi không thấy cách nào để làm điều đó bằng cách sử dụng grep, nhưng bạn có thể sử dụng perl, ví dụ.,

perl -e '$/="\r\n";' -ne 'print if /your_pattern/;' your_filename

hoặc bạn có thể sử dụng tr như một bộ lọc xung quanh grep, ví dụ.,

tr '\n\r' '\0\n' < your_filename | grep -a your_pattern | tr '\0\n' '\n\r'

Cái sau giả định rằng tệp của bạn không chứa bất kỳ NUL nào.


0

Tôi nghĩ rằng bạn cần phải sử dụng awk thay thế.
awk có biến RS (Records Seperator) để thay đổi dấu kết thúc 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.