Câu trả lời:
Các -m
tùy chọn có lẽ là những gì bạn đang tìm kiếm:
grep -m 10 PATTERN [FILE]
Từ man grep
:
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines. If the input is
standard input from a regular file, and NUM matching lines are
output, grep ensures that the standard input is positioned to
just after the last matching line before exiting, regardless of
the presence of trailing context lines. This enables a calling
process to resume a search.
Lưu ý: grep dừng đọc tệp sau khi đã tìm thấy số lượng trận đấu được chỉ định!
-m 1
và 1,579 giây mà không có trên một tệp có 10 triệu dòng trên máy tính xách tay của tôi.
tail
Nói chung, đường ống vào sẽ hoạt động, nhưng đặc biệt là nếu bạn đang kết hợp với bối cảnh, ví dụ: grep -A10 PATTERN
sử dụng tail
cắt ngắn bối cảnh, thay vì số lượng kết quả. Câu trả lời này là những gì tôi đang tìm kiếm.
-m 10
là tùy chọn tạo ra sự khác biệt khi grepping nhiều tệp! Đường ống đến đầu sẽ không hiển thị kết quả khớp trong các tệp tiếp theo nếu có quá nhiều kết quả khớp trong tệp đầu tiên. Cảm ơn !
Một tùy chọn khác chỉ là sử dụng đầu :
grep ...parameters... yourfile | head
Điều này sẽ không yêu cầu tìm kiếm toàn bộ tệp - nó sẽ dừng khi tìm thấy mười dòng phù hợp đầu tiên. Một ưu điểm khác với phương pháp này là sẽ trả về không quá 10 dòng ngay cả khi bạn đang sử dụng grep với tùy chọn -o.
Ví dụ: nếu tệp chứa các dòng sau:
112233
223344
123123
Sau đó, đây là sự khác biệt trong đầu ra:
$ grep -o '1.' tài khoản của bạn | đầu -n2 11 12 $ grep -m2 -o '1.' 11 12 12
Sử dụng head
trả về chỉ có 2 kết quả như mong muốn, trong khi -m2 trả về 3.
| head
đường ống khi sử dụng grep
với -A
hoặc -B
(và do đó không chỉ tìm kiếm kết quả ( -o
) mà còn cho bối cảnh). Trong trường hợp đó, bạn còn lại -m
để nói với grep số dòng có kết quả được trả về.
Sử dụng đuôi:
#dmesg
...
...
...
[132059.017752] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
[132116.566238] cfg80211: Calling CRDA to update world regulatory domain
[132116.568939] cfg80211: World regulatory domain updated:
[132116.568942] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132116.568944] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568945] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568947] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[132116.568948] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568949] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132120.288218] cfg80211: Calling CRDA for country: GB
[132120.291143] cfg80211: Regulatory domain changed to country: GB
[132120.291146] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132120.291148] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | head 2
head: cannot open ‘2’ for reading: No such file or directory
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -2
[132120.291153] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -5
[132120.291148] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -6
[132120.291146] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132120.291148] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$
Đối với 2 trường hợp sử dụng:
grep -m 2
là mỗi lần xuất hiện tối đa của tệp. git grep
mà không mất-m
Một lựa chọn tốt trong các tình huống này là grep | sed 2q
grep 2 lần xuất hiện đầu tiên trên tất cả các tệp. tài liệu sed: https://www.gnu.org/software/sed/manual/sed.html
less
qua đường ống. Điều đó sẽ lấp đầy màn hình và bạn có thể nhấn ENTER để xem nhiều dòng hơn vàq
thoát:grep "SomeText" somefile.csv | less