GNU/Linux >> Znalost Linux >  >> Linux

Používáte Sed se speciálními znaky?

Mám adresář plný souborů XML, které vypadají takto, u kterých chci změnit hodnotu čísla prvku „offset“ z 1 na nějaké jiné číslo

$ cat my.xml
      <offset xmlns="">1</offset>

Napsal jsem různé kombinace tohoto příkazu sed, ale nic, co jsem zkoušel, neběží bez chyby. Jsem si docela jistý, že musím uniknout některým postavám, ale ty, které jsem zkoušel, vždy končí chybami („neočekávaný token“, „neznámá možnost“ atd.). Zkoušel jsem také bez příznaku -e, protože to opravdu není výraz.

sed -i -e s/<offset xmlns="">1</offset>/<offset xmlns="">99</offset>/ *.xml

Ocenili bychom jakoukoli pomoc.

Přijatá odpověď:

Zkuste toto,

$ sed 's~<offset xmlns="">1~<offset xmlns="">99~g' file
          <offset xmlns="">99</offset>

Pokud vstup obsahuje lomítka, použijte jiný oddělovač sed.


Linux
  1. Použití více vzorů najednou pomocí příkazu Sed

  2. Používáte Notify-Send s Cronem?

  3. Smazání všech C komentářů se Sedem?

  1. Převést heslo se speciálními znaky pro použití s ​​Expect Script?

  2. Zobrazit speciální znaky v Unixu při použití příkazu 'less'

  3. nahraďte text stejnou délkou pomocí sed

  1. Jak při použití printf uniknout speciálním znakům ve skriptu shellu?

  2. Jak podložit soubor pomocí FF pomocí dd?

  3. Jak rekurzivně nahradit znaky sed?