2016-04-06 16 views
7

Po prostu niewielkie zastrzeżenie, nie jestem obeznany z programowaniem, więc przepraszam, jeśli używam jakichkolwiek terminów niepoprawnie/w sposób mylący.Wyjście wypukłości rurociągu do grep

Chcę być w stanie wyodrębnić określone informacje ze strony internetowej i próbowałem to zrobić, wyprowadzając wyjście funkcji zwijania do grep. Aha, i to jest w cygwin, jeśli to ma znaczenie.

Po prostu wpisując

$ curl www.ncbi.nlm.nih.gov/gene/823951 

terminal drukuje całą stronę w co wierzę być html. Stąd ja myślałem tylko rura wyjście do funkcji grep z jakiegokolwiek wyszukiwania wyrażenia mógłby chcieć:

$ curl www.ncbi.nlm.nih.gov/gene/823951 | grep "Gene Symbol" 

Ale zamiast drukować stronę internetową w ogóle, terminal daje mi:

% Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 142k 0 142k 0  0 41857  0 --:--:-- 0:00:03 --:--:-- 42083 

Can ktoś wyjaśnia, dlaczego to robi/jak mogę wyszukać określone wiersze tekstu na stronie internetowej? W końcu chcę skompilować informacje takie jak nazwy genów, typy i opisy do bazy danych, więc miałem nadzieję, że później wyeksportuję wyniki z funkcji grep do pliku tekstowego.

Każda pomoc jest niezwykle doceniana, z góry dziękujemy!

Odpowiedz

9

Curl wykrywa, że ​​nie wysyła do terminala i pokazuje miernik postępu. Możesz wyłączyć miernik postępu za pomocą -s.

Dane HTML są rzeczywiście wysyłane na grep. Jednak strona ta nie zawiera tekstu "Symbol genu". Grep rozróżnia wielkość liter (chyba że wywoływany jest parametr -i) i szuka "symbolu genu".

$ curl -s www.ncbi.nlm.nih.gov/gene/823951 | grep "Gene symbol" 
    <dt class="noline"> Gene symbol </dt> 

Prawdopodobnie też chcą następną linię HTML, który można zrobić wyjście grep z opcją -a

$ curl -s www.ncbi.nlm.nih.gov/gene/823951 | grep -A1 "Gene symbol" 
    <dt class="noline"> Gene symbol </dt> 
    <dd class="noline">AT3G47960</dd> 

Zobacz man curl i man grep uzyskać więcej informacji na temat tych i innych opcji.