Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem SED - vyhladavanie

Nedavno som pouzil uspesne sed na upravu textoveho suboru (xml). Trvalo to sice hooooodne dlho, ale podarilo sa.
Teraz potrebujem nieco obdobne, vlozit kusok textu na vopred zadefinovane miesto. To si najdem podla charakteristickeho reazca. To by som vedel, ale problem je, ze potrebujem vlozit tento text iba za PRVY vyskyt charakteristickeho retazca, v subore je ich viac. Nikde nemozem najst ako to zapisat.

Předmět Autor Datum
Tohle jsi zkoušel? https://stackoverflow.com/questions/148451/how-to-use-sed-to-replace-only-the-fir…
Wikan 09.01.2023 12:49
Wikan
presne na to teraz pozeram, ale toto je nejaky uplne iny zapis
truhlik 09.01.2023 13:04
truhlik
Teraz som narazil na problem, ze vyhladavany retazec je v podstate v 3 riadkoch :-), na konci kazdeh…
truhlik 09.01.2023 15:09
truhlik
Musi to byt sed? Pokud je to XML, proc nepouzijes nejaky CLI tool, ktery s nim umi primo pracovat a…
MaSo 09.01.2023 15:16
MaSo
Idem na to pozriet, ten sed sa mi pacil, lebo je to viac univerzalnejsie, ked sa s tym naucis (akyko…
truhlik 09.01.2023 16:18
truhlik
Sed je sice univerzalni, ale kdyz potrebujes delat queries nad tim XML (treba podle hotnot elementu,…
MaSo 10.01.2023 08:15
MaSo
Ty si to tusim privolal :-) MAs s tym skusenosti? Ja pohladam, ale len tak ci je to v tomto vobec mo…
truhlik 10.01.2023 20:12
truhlik
Vstup (text.xml): <?xml version="1.0"?> <cars> <car> <id>1</id> <tag1>3</tag1> <tag2>vejce1</tag2>…
MaSo 11.01.2023 08:40
MaSo
DIky, zatial neviem, ako prvy krok je to vyborne na studium. Idem si spravit priklady a popasovat sa… poslední
truhlik 11.01.2023 18:30
truhlik

Teraz som narazil na problem, ze vyhladavany retazec je v podstate v 3 riadkoch :-), na konci kazdeho je CRLF pravdepodobne, a to mi robi trosku dost problem . . . vo vyhladavani
EDIT: vzorovy sa lisi od realneho, realny je jeden straaaaaasne dlhy retazec bec CRLF :-)

Ty si to tusim privolal :-)
MAs s tym skusenosti? Ja pohladam, ale len tak ci je to v tomto vobec mozne
tag ID (asi 100x), pod kazdym asi 10 dalsich tagov, potrebujem zmenit napr tag5 ale len ked tag2="A'
Je nieco take v tom mozne?

Vstup (text.xml):

<?xml version="1.0"?>
<cars>
    <car>
        <id>1</id>
        <tag1>3</tag1>
        <tag2>vejce1</tag2>
    </car>
    <car>
        <id>2</id>
        <tag1>3</tag1>
        <tag2>vejce2</tag2>
    </car>
    <car>
        <id>3</id>
        <tag1>4</tag1>
       <tag2>vejce3</tag2>
    </car>
</cars>

Prikaz, ktery zmeni hodnutu tag2 na "vejce8", u elementu car kde tag1 ma hodnotu 3.

xmlstarlet ed -u "/cars/car[tag1="3"]/tag2" -v vejce8 text.xml

Vystup:

<?xml version="1.0"?>
<cars>
  <car>
    <id>1</id>
    <tag1>3</tag1>
    <tag2>vejce8</tag2>
  </car>
  <car>
    <id>2</id>
    <tag1>3</tag1>
    <tag2>vejce8</tag2>
  </car>
  <car>
    <id>3</id>
    <tag1>4</tag1>
    <tag2>vejce3</tag2>
  </car>
</cars>

Je to ono?

Zpět do poradny Odpovědět na původní otázku Nahoru