Portál AbcLinuxu, 7. května 2025 22:18
<a href="/path/img.jpg" rel="gb_imageset[aqha]" title="jmeno - obrazku"><img class="foobar" src="/path/img_nahled.jpg" alt="jmeno - obrazku"></a>potrebuju tento radek ve vsech souborech nahradit za:
<a href="/path/img.jpg" rel="gb_imageset[aqha]" title="jmeno - obrazku"><img class="foobar" src="/path/img_nahled.jpg" alt="jmeno - obrazku"></a> <a href="/path/ABC.jpg" rel="gb_imageset[aqha]" title="jmeno - obrazku"><img class="foobar" src="/path/ABC_nahled.jpg" alt="jmeno - obrazku"></a>tedy 2 radky, muzete mi prosim poradit, jak na to?
Řešení dotazu:
perl -pE 'print $_;s{/path/img}{/path/ABC}g' <vstup >vystup
perl -pE 'if(/\/path\/img/){print $_;s{/path/img}{/path/ABC}g;}' <vstup %gt;vystup
perl -pE 'if(m{/path/img}){print $_;s{/path/img}{/path/ABC}g;}' <vstup >vystup
perl -pE 'my $radek=$_; print $radek if s{/path/img}{/path/ABC}g' <vstup >vystup
for i in *.html ; do sed -r -i s/"^(<a href=\"\/path\/)([a-zA-Z0-9]+)(.jpg\".*src=\"\/path\/)(\\2)(_nahled.jpg\".*)$"/"\\0\n\\1ABC\\3ABC\\5"/ $i doneSamozřejmě by to bylo nutno před použitím ještě trochu upravit dle tvých konkrétních dat, nevím, jaké se tam okolo vyskytuje HTML, tak aby se to třeba nechytlo na nějaký jiný řádek apod. Základní idea tohoto řešení je to, že v druhé části příkazu s/// můžeš použít reference na jednotlivé matchnuté části z první části příkazu: \0 je celý matchnutý řádek, \1 až \5 pak jednotlivé části vymezené kulatými závorkami. Nový řádek je klasicky \n.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.