adott pozíción lévő karakterek cseréje

Üdv mindenkinek!

Adott egy txt állomány. Benne rengeteg szám, egy-két betü, és itt-ott szóköz.
Ki szeretném cserélni, a 24. és 25. pozíción lévő '1 ' karaktereket '01'-re (ha van ilyen).
Lehet van szóköz az első 23 karakterben, lehet hogy nincs.

Megakadtam.
Minden segítséget köszök

PtR

Hozzászólások

Gondolkozz gyerkőc!
Én is így tettem gyerkőc koromban.

segítség: man cut
cut + bash (if)
VAGY
man sed
VAGY
man awk
VAGY
man perl

DE még akár C-ben is meg lehet írni :)

Várj. Szóval csak akkor cserél, ha a kiemelt elemek értéke 1 és szóköz, máskülönben nem csinál semmit? Mert akkor ez C-ben kb ennyi:

if(stringem[23]=='1' && stringem[24]==' ')
{
stringem[23]='0';
stringem[24]='1';
}

Jól értem-e: 24. 25. pozíción lehet xx, x1, 1x, 11, amiből rendre xx, x1, 1x, 01 kell legyen? Hint: sed-del illeszd a mintát a sor elejére, a minta első eleme legyen 23 tetszőleges karakter, méghozzá jelzett mintaként (zárójelezve), hogy az s parancs "mire" mintájában \1 -ként tudj rá hivatkozni. A minta következő része legyen "11", majd ezt cseréld le \1-et követő 01-re:

sed 's/^\(.\{23\}\)11/\101/'

Szerintem...

Ha az xx, x1, 1x, 11 -> xx, x01, 01x, 0101 az elvárt átalakulás, akkor a fentit kell picit maszírozni:


$ sed 's/^\(.\{24\}\)1/\101/
s/^\(.\{23\}\)1/\101/'

A megoldás fentebb :-))