Portál AbcLinuxu, 25. dubna 2024 08:05


Dotaz: Sed a premmenna v nahradzovacom vyraze

1.9.2008 18:37 pupala
Sed a premmenna v nahradzovacom vyraze
Přečteno: 140×
Odpovědět | Admin
Dobry den

Mam regexp pre nahradenie IP v subore cez sed s/[1-9][0-9]\{0,2\}\.[1-9][0-9]\{0,2\}\.[1-9][0-9]\{0,2\}\.[0-9][0-9]\{0,2\}/`$IP`/g , len do dosadzovacieho vyrazu neviem umiestnit novu IP z premennej. Ako na to? Uz som z tych roznych druhov regexpov domiesany a na toto som nenasiel odpoved. Spustam to zo scriptu. Dakujem.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.9.2008 19:50 Mortal | skóre: 26 | blog: mortals_log
Rozbalit Rozbalit vše Re: Sed a premmenna v nahradzovacom vyraze
Odpovědět | | Sbalit | Link | Blokovat | Admin
ty apostrofy kolem $IP tam nemaji co delat
V pekle jsou samé diskety a ďábel je velká disketová mechanika
1.9.2008 20:05 ams
Rozbalit Rozbalit vše Re: Sed a premmenna v nahradzovacom vyraze
Odpovědět | | Sbalit | Link | Blokovat | Admin
1) Tento regexp odpovida nejenom IP adrese, ale i treba 999.999.999.999 (a dokonce i 1234567890.999.999.1234567890).

2) Staci, aby shell provedl expanzi promenne $IP, to znamena dat ji do uvozovek.
$ cat ip.sed
#!/bin/sh

IP="IP-adresa"
BYTE='\([0-9]\|[0-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)'
sed "s/\b\($BYTE\.\)\{3\}$BYTE\b/\`$IP\`/g"

$ echo -e "66.249.91.147\n999.999.999.999" | sh ip.sed
`IP-adresa`
999.999.999.999

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.