Portál AbcLinuxu, 10. května 2025 08:50

Dotaz: sed

30.11.2012 14:02 pxvos | skóre: 4
sed
Přečteno: 271×
Odpovědět | Admin

Ahoj, mam soubor, kde pomoci sedu odstranim cast textu. Prikaz funguje dobre, ale na konci souboru se nachazi slovo u ktereho neni znak pro konec radku a to slovo se po pouziti sed prikazu smaze. Pokud ho rucne odentruju, tak je to ok, ale potreboval bych to mit cele v tom sed prikazu. Muzete mi pls poradit, jak to osetrit? Diky moc

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.11.2012 14:16 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
kde pomoci sedu odstranim cast textu
to slovo se po pouziti sed prikazu smaze

Čili to funguje.

Vložte sem nějak osekanou verzi, na které se ten problém projeví. I s testovacím daty, na kterých to padá.

Btw, neřekl bych, že sed pracuje s posledním řádkem (který nemá na konci \n) nějak jinak než s ostatními.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
30.11.2012 14:35 pxvos | skóre: 4
Rozbalit Rozbalit vše Re: sed

zkousel jsem toto: sed -e 's/ xml.*xml"//' < stary_soubor > novy_soubor

nebo i toto: sed 's/ xml=".*\.xml"//' stary_soubor > novy_soubor

 

na text:

<apps>

<app file="soubor" xml="soubor.xml"/>

</apps>

 

a vrati mi to:

<apps>

<app file="soubor"/> ........toto je spravne

........ tady zmizi </apps> coz je spatne. Pokud to ve vi editoru odentruju, tak se to chova spravne.

30.11.2012 15:23 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: sed

Tak jsem to ozkoušel a nic nezmizí (GNU sed verze 4.2.1). Není problém někde jinde?

Ale pokud jde jen o to přidat prázdný řádek na konec, lze to udělat taky sedem nebo pomocí

( cat stary_soubor; echo ) | sed '...'
I am always ready to learn although I do not always like to be taught. (W. Churchill)
30.11.2012 15:34 pxvos | skóre: 4
Rozbalit Rozbalit vše Re: sed

to mi bude stacit, diky moc za radu

30.11.2012 18:09 pxvos | skóre: 4
Rozbalit Rozbalit vše Re: sed

hmm, tak porad nic, myslel jsem, ze uz to funguje, ted to zkousim na tom serveru, kde potrebuju a porad je to stejne

( cat stary_soubor; echo ) | sed 's/ xml=".*\.xml"//' stary_soubor > novy_soubor

 

nemuze to byt tim, ze to delam na HP-UX? Mate kdyztak nekdo tip na sed, ktery bude v tomto pripade na unixu fungovat taky? diky

1.12.2012 02:22 Ash | skóre: 53
Rozbalit Rozbalit vše Re: sed
nemuze to byt tim, ze to delam na HP-UX

Nevím, jakou máte verzi, ale v těch starších byla polovina nástrojů značně zablešena.
1.12.2012 02:30 Ash | skóre: 53
Rozbalit Rozbalit vše Re: sed
Máte tam jeden starý soubor navíc, to co hledáte je:
( cat stary_soubor; echo ) | sed 's/ xml=".*\.xml"//' > novy_soubor
30.11.2012 15:26 mchf
Rozbalit Rozbalit vše Re: sed
Zvlastni. S GNU sed 4.2.1 to funguje.
0000000   <   a   p   p   s   >  \n   <   a   p   p       f   i   l   e
0000020   =   "   s   o   u   b   o   r   "       x   m   l   =   "   s
0000040   o   u   b   o   r   .   x   m   l   "   /   >  \n   <   /   a
0000060   p   p   s   >
0000064
a vysledek
0000000   <   a   p   p   s   >  \n   <   a   p   p       f   i   l   e
0000020   =   "   s   o   u   b   o   r   "   /   >  \n   <   /   a   p
0000040   p   s   >
0000043
30.11.2012 15:42 Kit
Rozbalit Rozbalit vše Re: sed
Možná by bylo vhodnější pro tuto úlohu místo sedu použít xsltproc.
30.11.2012 14:34 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
místo \n použít [\n\Z] ?
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
30.11.2012 15:43 Ash | skóre: 53
Rozbalit Rozbalit vše Re: sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pamatuji že na tohle jsem v nějaké verzi sedu také narazil, "opravil" jsem ho klasicky prostřednictvím upgrade na funkční verzi.
bash$ echo -n -e "<apps>\n<app file=\"soubor\" xml=\"soubor.xml\"/>\n</apps>" > stary_soubor

bash$ od -Ax -tx1z -v stary_soubor
000000 3c 61 70 70 73 3e 0a 3c 61 70 70 20 66 69 6c 65  ><apps>.<app file<
000010 3d 22 73 6f 75 62 6f 72 22 20 78 6d 6c 3d 22 73  >="soubor" xml="s<
000020 6f 75 62 6f 72 2e 78 6d 6c 22 2f 3e 0a 3c 2f 61  >oubor.xml"/>.</a<
000030 70 70 73 3e                                      >pps><
000034

bash$ sed -e 's/ xml=".*\.xml"//' stary_soubor
<apps>
<app file="soubor"/>
</apps>

bash$ sed --version | grep version
GNU sed version 4.2.1
30.11.2012 18:19 pxvos | skóre: 4
Rozbalit Rozbalit vše Re: sed
chci to rozbehnout na HP-UX, kde verze sedu je sed0.c $Date: 2008/04/23 11:11:11 $Revision: r11.31/1 PATCH_11.31 (PHCO_38263) $Revision: @(#) sed R11.31_BL2008_1022_2 PATCH_11.31 PHCO_38263

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.