2012-10-02 11 views
8

Miałem nadzieję, że ktoś może pomóc w tym. Próbuję dowiedzieć się, jak wyświetlić pierwszy wiersz, który zawiera pewien ciąg, np. "Komputer" (pierwsze wystąpienie "komputera" w pliku txt). Wolałbym to zrobić używając grep.Jak wyświetlić pierwszy wiersz zawierający określony ciąg w unixie pliku tekstowego?

wiem grep "computer" somefile.txt

wyświetli wszystkie linie w tym „Komputer”. Jestem chętny do nauki i jeśli ktoś ma alternatywne sposoby, chciałbym usłyszeć!

Thx wszyscy

+1

Masz na myśli "zawiera" lub "nie zawiera"? Twoje pytanie wydaje się mówić o ... – singpolyma

+0

'-n' wydrukuje numer wiersza w pliku. Tylko uzupełnienie wszystkich odpowiedzi. – squiguy

+0

@squiguy I -A 3 wydrukuje 3 linie po meczu, więc co. Nie przepisujemy strony podręcznika dla grep :-) –

Odpowiedz

14

Użyj opcji zliczania meczu grep

grep -m 1 "computer" somefile.txt 

Uwaga że grep nie jest standardem w un * x jest tak natomiast http://www.gnu.org/software/grep/ obsługuje tej, jeśli dystrybucja lub Unix to nie zadziała.

+0

dzięki temu działa – Masterminder

+0

Cool - i jak pokazali inni - istnieje więcej niż jeden sposób, aby to zrobić. –

+0

Pamiętaj, że ta opcja może nie istnieć w Twojej wersji 'grep', ponieważ jest niestandardowa: http://pubs.opengroup.org/onlinepubs/007904875 /utilities/grep.html – singpolyma

-1

Czy to praca domowa?

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

Przychodzi do głowy najszybciej.

+0

Po prostu wypróbowuję ćwiczenia. Przy okazji, który wyświetla tylko pierwszą linię pliku ... Nie pierwsze wystąpienie "komputera" – Masterminder

+0

To z powodu "-v". -v w grep oznacza: "Nie pasuje" – Sandro

+0

dziękuję bardzo, rozumiem, co miałeś na myśli przed – Masterminder

10

Rury są twoim przyjacielem:

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

Miło to działa również – Masterminder

Powiązane problemy