Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: psychogenius 05 Listopadu 2011, 11:40:48

Název: premena v sed prikaze
Přispěvatel: psychogenius 05 Listopadu 2011, 11:40:48
mam premenu riadok1
echo $riadok1
0000100: 9d02 0000 62fd ffff 9d02 0000 11ee 11ee

mam prikaz sed
sed 's/0000100:......................................../'$riadok1}'/'   test
ale toto mi hodi
sed: -e expression #1, char 63: unterminated `s' command

o par riadkov vysie mam taky isty prikaz  ten prechadza aj ked obsah premenj v tom druhom je bez medzier ale ked ostranim nedzere z riadok1 aj tak to neprejde uz som skusil asi vsetky mozne kombinacie ale nejako to nejde neviete mi nejako pomoct ?
Název: Re:premena v sed prikaze
Přispěvatel: GdH 05 Listopadu 2011, 12:43:05
V uvedeném příkladu jsi použil jednoduché uvozovky opravdu zmateně, je jasné, že tohle fungovat nemůže.
příkazy sedu se nejčastěji uzavírají do jednoduchých uvozovek kvůli tomu, aby se obsah nesnažil interpretovat shell. Jenže v případě tvé proměnné naopak potřebuješ, aby se do toho shell vložil a proměnnou expandoval, takže řešením je použít dvojité uvozovky, ale musí se dávat pozor, aby nedocházelo k expandování i dalších speciálních znaků, na které shell reaguje, ty by se musely escapovat. Každopádně tvůj příklad by mohl fungovat následovně:

sed "s/0000100:......................................../$riadok1}/"   test
Název: Re:premena v sed prikaze
Přispěvatel: ntz_reloaded 05 Listopadu 2011, 12:51:29
sed 's/0000100:......................................../'$riadok1}'/'   test
ale toto mi hodi

co to je za blbost .. doufam, ze tam ty tecky fakt nemas
Název: Re:premena v sed prikaze
Přispěvatel: psychogenius 05 Listopadu 2011, 13:29:03
dvojite uvodzovky pomohli. tecky tam mam len docasne lebo sa mi neche pocitat znaky lebo neviem co je normalna a co dvojita medzera tak som si to vyetackoval a potom ked to bude sedet spocitam tecky.