2012-10-02 28 views
8

Đã hy vọng ai đó có thể giúp đỡ với điều này. Tôi đang cố gắng tìm ra cách để hiển thị dòng đầu tiên có chứa một chuỗi nhất định tức là "máy tính" (lần xuất hiện đầu tiên của "máy tính" trong một tệp txt). Tôi muốn làm điều này bằng cách sử dụng grep.Làm thế nào để hiển thị dòng đầu tiên có chứa một chuỗi nhất định trong một tập tin văn bản unix?

Tôi biết grep "computer" somefile.txt

sẽ hiển thị tất cả các dòng bao gồm "máy tính". Tôi rất mong muốn tìm hiểu và nếu có ai đó có những cách khác tôi muốn nghe!

Thx mọi người

+1

Bạn có nghĩa là "chứa" hoặc "không chứa" không? Câu hỏi của bạn dường như nói về cả hai ... – singpolyma

+0

'-n' sẽ in số dòng trong tệp. Chỉ cần bổ sung cho tất cả các câu trả lời. – squiguy

+0

@squiguy Và -A 3 sẽ in 3 dòng sau trận đấu, vì vậy những gì. Chúng tôi không viết lại trang người đàn ông cho grep :-) –

Trả lời

14

Sử dụng tùy chọn số trận đấu của grep

grep -m 1 "computer" somefile.txt 

Lưu ý rằng grep là phi tiêu chuẩn trên un * x của như vậy trong khi http://www.gnu.org/software/grep/ hỗ trợ này, nếu distro của bạn hoặc unix không điều này sẽ không hoạt động.

+0

nhờ công trình này – Masterminder

+0

Cool - và như những người khác đã trình bày - có nhiều cách để làm điều này –

+0

Xin lưu ý rằng tùy chọn này có thể không tồn tại trong phiên bản 'grep' của bạn, vì nó không chuẩn: http://pubs.opengroup.org/onlinepubs/007904875 /utilities/grep.html – singpolyma

-1

Đây có phải là bài tập về nhà không?

grep -v "computer" somefile.txt | head -n 1 

Hãy nhớ đến nhanh nhất.

+0

Tôi chỉ đang cố gắng thực hiện các bài tập. Bằng cách chỉ hiển thị dòng đầu tiên của tệp ... Không phải lần xuất hiện đầu tiên của "máy tính" – Masterminder

+0

Đó là do "v". -v trong grep có nghĩa là: "Không khớp" – Sandro

+0

cảm ơn rất nhiều Tôi thấy ý của bạn trước – Masterminder

10

Ống là bạn của bạn:

grep "computer" somefile.txt | head -n1 
+0

Điều này cũng hoạt động tốt – Masterminder

Các vấn đề liên quan