Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: fotka 01. 09. 2016, 14:02:25
-
Dobrý den,
chtěl bych poprosit o radu.
Na Linux serveru mám v adresáři více souborů v nichž potřebuji provést nahrazení určité fráze/řetězce pouze pokud daná linka (souboru) na které se fráze nachází, NEobsahuje frázi "-t"
Nahrazovat budu ".com/" za ".com/#" a aby bylo nahrazení provedeno, linka na které .com/ bude nalezeno nesmí obsahovat "-t"
Potřebuji aby ta podmínka "-t" byla opravdu na danou linku ne celý obsah souboru a soubor obsahuje několik .com/ takže více nahrazení na soubor
Jaký příkaz mohu prosím použít?
děkuji
-
perl -i -pe 's/\.com\//$&#/ unless /-t/' *txt
-
sed umoznuje pridat filter kdy nejdriv hleda jestli na radku je retezec a pak teprve provede nahrazeni jineho retezce... pro pripad NEni je negace pomoci znaku vykricnik
sed -e '/-t/! s/\.com\//\.com\/#/' -i *.txt
nebo o chlup prehledneji kdy misto bezneho sed oddelovaciho znaku / pouzita :
sed -e '/-t/! s:\.com/:.com/#:' -i *.txt
pokud by to melo nahrazovat vice adres na jednom radku, pridal by se nakonec parametr g jako global
sed -e '/-t/! s:\.com/:.com/#:g' -i *.txt