Làm cách nào để thêm dòng mới giữa các dòng được in trên dòng lệnh?


30

Nhật ký thư rất khó đọc. Làm cách nào tôi có thể xuất một dòng trống giữa mỗi dòng được in trên dòng lệnh? Ví dụ: giả sử tôi đang chỉnh sửa nhật ký. Theo cách đó, nhiều dòng bọc không bị nhầm lẫn.

Câu trả lời:


52
sed G 
# option: g G    Copy/append hold space to pattern space.

Gkhông thường được sử dụng, nhưng là tốt cho mục đích này. sed duy trì hai không gian bộ đệm: không gian mô hình của nhà vua và không gian tổ chức không gian. Các dòng xử lý bởi sed thường chảy qua không gian mô hình như các lệnh khác nhau hoạt động trên nội dung của nó ( s///, p, vv); không gian giữ bắt đầu trống và chỉ được sử dụng bởi một số lệnh.

Các Glệnh gắn thêm một dòng mới và các nội dung của vũ trụ giữ cho không gian mẫu. Chương trình sed ở trên không bao giờ đặt bất cứ thứ gì vào không gian giữ, vì vậy, Ghiệu quả chỉ là một dòng mới cho mỗi dòng được xử lý.


3
-E không cần thiết. đường ống whatever | sed Gnên làm thủ thuật.
frabjous

@frabjous: Phải, cũng có thể bỏ qua -evì chúng ta chỉ cần một đối số lệnh duy nhất.
Chris Johnsen

Tôi có thể cho bạn thích, +2 không? Móng tay nó!
Christian Bongiorno

nhưng, nó chỉ được hiển thị trong thiết bị xuất chuẩn, nhưng không lưu nó
biolinh

8

Sử dụng awk để thêm một dòng mới. Điều này cũng cho phép bạn lọc ra những thứ bạn không muốn.

awk '{print $0,"\n"}' | less

4

Sử dụng sed và tự thay thế toàn bộ dòng cộng thêm một ký tự dòng mới:

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"

4
Một thay thế sed đơn giản hơn một chút sẽ là 's / $ / \ n /', mặc dù lệnh 'G' của @Chris Johnsen thậm chí còn đơn giản hơn.
camh

3

Đây có phải là những gì bạn đang theo đuổi?

grep SPAM mail.log | while read -r line; do echo; echo $line; done


Bạn có thể sẽ muốn sử dụng read -rđể tránh coi các ký tự dấu gạch chéo ngược là đặc biệt.
Chris Johnsen

0

Nếu không chỉ đơn giản là nhìn, tôi thích gửi chúng vào tệp văn bản và mở bằng trình chỉnh sửa văn bản để bạn có thể đặt các dòng để bọc hoặc không và thực hiện tìm kiếm dễ dàng ... và xóa các dòng không mong muốn, v.v. phải gõ rất nhiều lệnh.

cat file.log > log.txtgedit log.txthoặc một trình soạn thảo đầu cuối như nano

Chỉnh sửa: hoặc cp file.log log.txttất nhiên là dễ dàng hơn và nhanh hơn ... nhờ bình luận của KeithB


1
Tại sao catvà không cp?
KeithB

chắc chắn cpsẽ dễ dàng hơn và nhanh hơn ... lol - Tôi đã đọc những câu trả lời khác đối phó với grepawkvì vậy tôi đã viết nó catcách nhưng tôi sửa chữa, nhờ
laurent
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.