Làm thế nào để grep và in N dòng tiếp theo sau khi nhấn?


16

Tôi muốn grep cho một lần xuất hiện trong tệp văn bản, sau đó in N dòng sau đây sau mỗi lần xuất hiện. Có ý kiến ​​gì không?

Câu trả lời:


23

Grep có các tùy chọn sau sẽ cho phép bạn làm điều này (và những thứ tương tự). Bạn có thể muốn xem trang người đàn ông để biết thêm thông tin:

  • -A num In các dòng chữ theo ngữ cảnh sau mỗi trận đấu. Xem thêm các tùy chọn -B và -C.

  • -B num In các dòng num của bối cảnh hàng đầu trước mỗi trận đấu. Xem thêm các tùy chọn -A và -C.

  • -C [num] In các dòng num của bối cảnh hàng đầu và dấu vết xung quanh mỗi trận đấu. Mặc định là 2 và tương đương với -A 2 -B 2. Lưu ý: không có khoảng trắng nào có thể được đưa ra giữa tùy chọn và đối số của nó.


7

Nếu bạn có GNU grep, đó là tùy chọn -A/ --after-context. Nếu không, bạn có thể làm điều đó với awk.

awk '/regex/ {p = N}
     p > 0   {print $0; p--}' filename

1
awk '/regex/{p=2} p > 0 {print $0; p--}' filename- công trình, của bạn không.
BladeMight


3

In N dòng sau khi khớp dòng

Bạn có thể sử dụng grepvới -A ntùy chọn để in N dòng sau khi khớp dòng.

Ví dụ:

$ cat mytext.txt 
  Line1
  Line2
  Line3
  Line4
  Line5
  Line6
  Line7
  Line8
  Line9
  Line10

$ grep -wns Line5 mytext.txt -A 2
5:Line5
6-Line6
7-Line7

Các tùy chọn liên quan khác:

In N dòng trước khi khớp dòng

Sử dụng -B ntùy chọn bạn có thể in N dòng trước khi phù hợp với dòng.

$ grep -wns Line5 mytext.txt -B 2
3-Line3
4-Line4
5:Line5

In N dòng trước và sau khi khớp dòng

Sử dụng -C ntùy chọn, bạn có thể in N dòng trước và sau khi khớp dòng.

$ grep -wns Line5 mytext.txt -C 2
3-Line3
4-Line4
5:Line5
6-Line6
7-Line7
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.