Moin moin,
ich suche einen schönen one-liner in sed oder awk der Folgendes macht:
Er sucht per regular Expression einen String in einem File. Bei einem match gehe n Zeilen weiter im File und suche/ersetze dort einen anderen String. n ist fest vorgegeben, sagen wir 9.
Jemand eine Idee?
Gruss, Jörg.
Suche string, dann suche nächsten String und ersetze?
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Suche string, dann suche nächsten String und ersetze?
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: Suche string, dann suche nächsten String und ersetze?
Code: Alles auswählen
sed '/R1/{n;n;n;n;n;n;n;n;n;s/R2/S/}' daten
awk '/R1/{l=NR};{if (l>0 && NR==l+9)sub(/R2/,"S");print}' daten
Re: Suche string, dann suche nächsten String und ersetze?
Zwar kein One-Liner, aber ein schoener Einsatz fuer ed:mistersixt hat geschrieben: ich suche einen schönen one-liner in sed oder awk der Folgendes macht:
Er sucht per regular Expression einen String in einem File. Bei einem match gehe n Zeilen weiter im File und suche/ersetze dort einen anderen String. n ist fest vorgegeben, sagen wir 9.
Code: Alles auswählen
ed - file <<!
/foo/+9s/bar/quux/
w
q
!
Code: Alles auswählen
echo '/foo/+9s/bar/quux/
w' | ed - file
Use ed once in a while!
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: Suche string, dann suche nächsten String und ersetze?
Prima, danke schön !
Gruss, mistersixt.
Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE