Wpis z mikrobloga

#linux #informatyka #bash
Ktos mi wyjasni czemu

grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' $SITE_CONTENT > $APACHELINK
Nie dziala mi a jak zrobie

grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' $SITE_CONTENT > $APACHELINK
To dziala?

Ogolnie skrypt ma wyciagac adresy IP z calego pobranego pliku html i wrzucac do www na apacha.
Kilka la temu mi tak dzialalo, ale teraz cos sie zmienilo chyba, i musialem zmienic grep, aby uzywal paremetru -o.

SITE_CONTENT to jest to co robi wget dla strony https://dan.me.uk/bgplookup?asn=32590
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Różnica między tymi dwoma poleceniami grep polega na tym, jak są obsługiwane dopasowania.

Pierwsze polecenie:

bash

grep
  • Odpowiedz
  • 0
@m4rio: Zly sie wyslowilem,
Bez polecenia -o, plik jest totalnie pusty. A wg mnie powinien byc wstanie wyciagnac cos z innego pliku, na ktorym operuje owym grepem.
Ponizej wklejam czesc tego pliku, na ktoryp grep -E nie dziala, ale dziala grep
  • Odpowiedz
  • 0
@m4rio: Rozumiem, ze parametr -o rrobi mi "exact match" zamiast typowego "contain", ale chodzi mi o to, ze grep -E po prostu nie mogl wygenerowac zadnego outputu na podstawie tego pliku, co pokazuje (abstrahujac od poprawnosci tego, co chcialem zobaczyc).
  • Odpowiedz
@Rudz1elec: do luftu ten grep, powinien się zaczynać znakiem początku linii ^ i kończąc lookbehindem (?=\/\d). A zamiast [0-9]{1,3} wystarczy \d ¯⁠\..(⁠ツ⁠)../⁠¯

grep -P '^(\d{1,3}\.){3}\d{1,3}(?=\/\d)'
  • Odpowiedz