What's new

Tutorial Simple Bash Scripting #2

sa ip matching boss, kapag may katabing string, hindi considered na ip yung halimbawa, 2.3.4.5blahblah. o kapag mahigit sa 255. eto yung resulta kapag ni-run sa current script:

Code:
$ cat ip.txt
lol 1.1.1.1
2.2.2.2 lol
i am ip 1.2.3.4
lol1.1.1.1
2.2.2.2lol
i am ip1.2.3.4
333.2.3.4
256.2.3.4

$ while read; do echo "$(grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' <(echo ${REPLY})) -- original line: ${REPLY}"; done < ip.txt
1.1.1.1 -- original line: lol 1.1.1.1
2.2.2.2 -- original line: 2.2.2.2 lol
1.2.3.4 -- original line: i am ip 1.2.3.4
1.1.1.1 -- original line: lol1.1.1.1
2.2.2.2 -- original line: 2.2.2.2lol
1.2.3.4 -- original line: i am ip1.2.3.4
33.2.3.4 -- original line: 333.2.3.4
56.2.3.4 -- original line: 256.2.3.4

pwede pa ma-improve, tulad nito:

Code:
$ while read; do echo "$(grep -oE '\<(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\>' <(echo ${REPLY})) -- original line: ${REPLY}"; done < ip.txt
1.1.1.1 -- original line: lol 1.1.1.1
2.2.2.2 -- original line: 2.2.2.2 lol
1.2.3.4 -- original line: i am ip 1.2.3.4
 -- original line: lol1.1.1.1
 -- original line: 2.2.2.2lol
 -- original line: i am ip1.2.3.4
 -- original line: 333.2.3.4
 -- original line: 256.2.3.4

hindi selected yung last 5 kase hindi valid ip.

-------
yung get domain from url, eto siguro bossing mas magaan sa bulsa kesa sa awk.
Code:
$ echo "https://example.com/foo?bar=foo" | grep -o '.\+/'
https://example.com/

----
mas concise na ip grabber
Code:
$ ip -o -4 addr ls | grep -o '\<inet [^ ]\+\>'
inet 127.0.0.1/8
inet 192.168.20.10/24
 
Last edited:

Similar threads

Back
Top