• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyciągnięcie wartości z pliku

Konkurs Mistrz Programowania
0 głosów
611 wizyt
pytanie zadane 21 października 2020 w Systemy operacyjne, programy przez Patrycjerz Mędrzec (192,320 p.)
edycja 21 października 2020 przez Patrycjerz

Cześć,

potrzebuję, za pomocą narzędzi dostępnych w terminalu Linuksa, wyciągnąć wartość pola response (to co jest w cudzysłowach, ale bez nich), jeśli poprzedzone jest polem url o odpowiedniej wartości. Ma to działać dla kilku wystąpień tego samego url. Preferowałbym użycie wyrażeń regularnych, ale inne pomysły też są mile widziane.

Przykładowy plik

url: "https://onet.pl"
response: "<html><body>Onet</body></html>"
url: "https://google.com"
response: "<html><body>Google First</body></html>"
url: "https://wp.pl"
response: "<html><body>WP</body></html>"
url: "https://google.com"
response: "<html><body>Google Second</body></html>"

Chcę wyciągnąć response dla google.com. Wynikiem operacji powinno być

<html><body>Google First</body></html>
<html><body>Google Second</body></html>

Powyższe to tylko przykład. Pól może być więcej, a ich wartości mogą być prezentowane w kilku liniach pliku. Nie możemy założyć, że response jest zawsze jedną linię pod url.

Dzięki za pomoc :)

komentarz 21 października 2020 przez overcq Pasjonat (22,630 p.)
Skąd się bierze pole "response"?
komentarz 21 października 2020 przez Patrycjerz Mędrzec (192,320 p.)
To tylko przykład. Nazwy pól i ich wartości nie mają znaczenia.
komentarz 21 października 2020 przez overcq Pasjonat (22,630 p.)
Chcesz po prostu pobrać zawartość strony?

2 odpowiedzi

0 głosów
odpowiedź 21 października 2020 przez overcq Pasjonat (22,630 p.)

Użyj awk. Coś w rodzaju:

/^response:/ {
# tutaj kod
}

 

0 głosów
odpowiedź 21 października 2020 przez tangarr Mędrzec (155,140 p.)

Ja bym to zrobił w taki sposób:

grep -A1 "url: \"https://google.com\"" /tmp/test.txt | grep "response: " | cut -d'"' -f2

Podejrzewam, że można by to zrobić awkiem bardziej elegancko

komentarz 21 października 2020 przez Patrycjerz Mędrzec (192,320 p.)

Właśnie chciałem uniknąć sposobu z grepem z opcją after, gdyż w moim przypadku pola mogą mieć wartości ze znakami nowej linii, więc nie mogę założyć, że ileś linijek niżej będzie response.

Podobne pytania

0 głosów
1 odpowiedź 946 wizyt
pytanie zadane 29 lipca 2017 w Offtop przez Hiskiel Pasjonat (22,830 p.)
0 głosów
0 odpowiedzi 724 wizyt
0 głosów
1 odpowiedź 332 wizyt
pytanie zadane 8 sierpnia 2017 w Systemy operacyjne, programy przez magda1111 Nowicjusz (170 p.)

93,657 zapytań

142,577 odpowiedzi

323,100 komentarzy

63,175 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...