Portál AbcLinuxu, 10. května 2025 08:50
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
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.
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.
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 '...'
to mi bude stacit, diky moc za radu
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
( cat stary_soubor; echo ) | sed 's/ xml=".*\.xml"//' > novy_soubor
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 > 0000064a 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
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
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.