Mèo Unix bắt đầu từ dòng


40

Cách tốt nhất để xuất ra từ một tệp bắt đầu từ một dòng cụ thể (số lượng lớn như 70000). Cái gì đó như:

cat --line=70000 <file>

Câu trả lời:


60

Hãy nhìn vào đuôi, chính xác hơn, đó là --lines = + N switch:

tail --lines=+100 <file>

Ồ Tôi đã không biết điều này ngay cả sau khi sử dụng nó trên linux trong 8 năm! Tôi luôn luôn sử dụng một bash fn! Cảm ơn ! getFromLine () {lineno = wc -l $1 | awk '{print $1}'; lineno = expr $lineno - $2; đuôi -n $ lineno $ 1; }
safeBadshah

2
Lưu ý, điều này không hoạt động trên Mountain Lion (Phiên bản hạt nhân Darwin 13.1.0). Biến thể của sư tử núi làtail -n
Kaushik Ghose

22

Cách rõ ràng nhất là tail. Cú pháp có thể hơi khác nhau tùy thuộc vào hệ điều hành bạn đang sử dụng:

tail -n +70000

Nếu bạn không thể taillàm việc, bạn có thể sử dụng sed, nhưng nó có thể kết thúc chậm hơn:

sed -pe '1,69999d'

tailchỉ hoạt động tốt trong MinGW (trên tệp văn bản 600 MB). Thời gian chạy chỉ vài giây (nhưng tệp đầu vào có thể đã có trong bộ đệm của tệp rồi).
Peter Mortensen

2

Nếu thay vì số dòng bạn cần bắt đầu liệt kê tại dòng chứa số đã cho $phrase, hãy thử cách sau.

more -1000 +/"$phrase" yourfilename | sed '1,4d'

-1000 sẽ liên tục liệt kê văn bản cho tối đa 1000 dòng; bạn có thể thay đổi điều này khi cần thiết. Các sedlệnh sẽ chặt 4 dòng đầu tiên của đầu ra, được tự động chèn vào bởi more, chứa một dòng trống, thông báo "... bỏ qua", và hai dòng trước dự định dòng bắt đầu của bạn. Tôi đoán điều này có thể thay đổi tùy thuộc vào hệ thống của bạn.


2

Bạn có thể sử dụng tham số NR với lệnh awk :

cat <file> | awk '{if (NR>=7000) print}'

2
Bạn có thể sử dụng lệnh này với các giới hạn khác. Như một mẫu: cat messages | awk '{if (NR>=7000 && NR <7003) print}'chỉ hiển thị cho bạn hàng 7000, 7001 và 7002.
Gefolge

-1

2
liên kết hấp dẫn, nhưng nó không thực sự cung cấp bất kỳ thông tin nào áp dụng cho câu hỏi này và tailđề xuất của bạn giống như câu trả lời được chấp nhận và các câu trả lời khác từ nhiều tuần trước. Tại sao phải đăng bài?
quack quixote

Liên kết bị hỏng -...can't find the server at www.scripterworld.com.
Peter Mortensen
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.