Loading [MathJax]/extensions/tex2jax.js
Ask Your Question
1

Jak vygrepovat ve formátu IP

asked Dec 15 '14

Petr Gondek gravatar image

updated Dec 15 '14

Jak napsat grep, aby našel IP adresy ve správném formátu? (* == znak [0-9])

tzn:
***.***.***.***
***.***.***.**
***.***.***.*
***.***.**.***
***.***.**.**
... atd
add a comment

2 Answers

Sort by » oldest newest most voted
2

answered Dec 15 '14

Josef Kokeš gravatar image

updated Dec 15 '14

  1. Jak v regulárním výrazu vyznačíte číslici?
  2. Jak v regulárním výrazu vyznačíte, že předcházející symbol se má opakovat jednou až třikrát?
  3. Jak v regulárním výrazu vyznačíte tečku?
  4. Jak v regulárním výrazu vyznačíte mezeru?
  5. Nasypeme do hrnce, zamícháme a máme požadovaný regulární výraz.
  6. Ne že by grep nějak pomohl, protože grep pouze hledá řádky, které výrazu vyhoví, ale nedokáže z nich vytáhnout kousky. K tomu slouží jiné nástroje, třeba sed.

Jenom pro úplnost, zapsat IP adresu regulárním výrazem stoprocentně není úplně jednoduchá úloha. I když se omezíme jen na IPv4, měli bychom v zásadě řešit to, že zdaleka ne všechny výrazy tvořené 1-3 číslicemi jsou v reálném světě platné (např. IP adresa tvořená číslem 345). IPv6 do toho zavádí další složitosti.

link

Comments

přesně bod číslo 2 nevím.

Petr Gondek (Dec 15 '14)

{m,n} děkuji

Petr Gondek (Dec 15 '14)

Tak vidíte, že víte :-)

Josef Kokeš (Dec 15 '14)
1

a bacha na .

hody (Dec 15 '14)

[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

Petr Gondek (Dec 15 '14)
see more comments
1

answered Jan 18 '15

shejby gravatar image

Včera jsem jsem to potřeboval chtěl jsem se podívat na IP adresy v logu webservru. A stačilo mi toto: (výstup jsem kontroloval sám a byl jen pro účely hraní si -> do skriptu bych si to asi ještě rozmyslel)

grep -o -E [0-9a-f]\{4\}:[0-9a-f]\{4\}:[0-9a-f]\{4\}:[0-9a-f]\{4\}:[0-9a-f]\{4\}:[0-9a-f]\{4\}:[0-9a-f]\{4\}:[0-9a-f]\{4\} grep -o -E [0-9]\{3\}.[0-9]\{3\}.[0-9]\{3\}.[0-9]\{3\}

Problém je ovšem složitější, záleží v jakém formátu se IP adresy vyskytují, hlavně třeba ten zkracovaný IPv6 formát může mít mnoho podob. Ale stačí trochu googlit: how to filter ipv4 and IPv6 addresses. Pokud se ovšem zabýváme i validitou, tak se RV podstatně zesložití.

link
add a comment

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Stats

Asked: Dec 15 '14

Seen: 430 times

Last updated: Jan 18 '15