Portál AbcLinuxu, 1. června 2025 18:55


Dotaz: Sed - nahrazeni radku

27.7.2007 14:57 krles
Sed - nahrazeni radku
Přečteno: 867×
Odpovědět | Admin
Dobry den po mnoha pokusech se sedem se mi stale nedari dobrat kyzeneho vysledku a ten by mel byt tento.

Najdi vsechy soubory *.html uvnitr najdi radek zacinajici na X cely tento radek presun na jine misto na (radek zacinajici na Y) v tom souboru. Nechci ale nahradit ^X za ^Y misto toho chci radek zacinajici na Y a vsechny ostatni posunout dolu a na vznikly prazdny radek vlozit radek zacinajici na X. Zjednodusene chci podle urcitych pravidel hejbat s cely radkem v dokumentu. Zatim sem sesmolil neco takoveho

#!/bin/sh
adresar=`find . -name "*.html"`
x=`sed -n 20p "$adresar"`

mv $adresar $adresar.docasne;
cat $adresar.docasne | sed -e "s/X.*$/$x/" > $adresar


Umim smazat radky,nahradit ale nevim jak vlozit prazdny radek a posunot text dolu. Diky vsem za nakopnuti snad sem to napsal srozumitelne :D
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

27.7.2007 18:01 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Sed - nahrazeni radku
Odpovědět | | Sbalit | Link | Blokovat | Admin

Myslím, že tohle je ono (řádek začínající Alpha vloží nad řádek začínající Bravo):

~/skripty/sed$cat radek.sed
/^Alpha/h;
/^Bravo/{
 G;
 s#\(.*\)\n\(.*\)#\2\n\1#
}
~/skripty/sed$cat radek.txt
bla bla 001
bla bla 002
Alpha la la
bla bla 003
Bravo la la
bla bla 004
~/skripty/sed$sed -f radek.sed radek.txt
bla bla 001
bla bla 002
Alpha la la
bla bla 003
Alpha la la
Bravo la la
bla bla 004
I am always ready to learn although I do not always like to be taught. (W. Churchill)
28.7.2007 10:30 Ondra
Rozbalit Rozbalit vše Re: Sed - nahrazeni radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
A možná se taky zamysli nad tím, že sed je na práci se streamy a ed na práci se soubory.

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.