BASH: string utolso karakter eltavolitasa

HalI!
Kis segitseg kellene :)
Adott szoveg, soronkent egy url (mondjuk). Tehat nem egyforma hosszu sorok.
Minden sor vege . (es ugyebar, minthogy URL, ez a szovegben is elofordul)
Ezt az utolso pontot szeretnem levagni (vagy 300 db van, szoval nem kezzel :),
de meg jobb lenne, ha altalanos lenne (hasonlot talaltam, csak ott azt hasznaltak
ki, hogy a sor vegi karakter nem fordult elo a szovegben es igy nem nehez AWK segitsegevel,
sor vegi karaktert beallitva elvalasztonak)

xy.com.
blabla.co.ab.
sit. Ebbol szeretnem a kovetkezot:
xy.com
blabla.co.ab

Hozzászólások

$ host=blabla.co.ab.
$ echo ${host/%./}
blabla.co.ab

man bash

2 szo :)


     ${parameter/pattern/string}
          The pattern is expanded to produce a pattern just as in
          pathname  expansion.   Parameter  is  expanded  and the
          longest match of pattern against its value is  replaced
          with string.  If Ipattern begins with /, all matches of
          pattern are replaced with string.   Normally  only  the
          first  match is replaced.  If pattern begins with #, it
          must match at the beginning of the  expanded  value  of
          parameter.   If pattern begins with %, it must match at
          the end of the expanded value of parameter.  If  string
          is  null, matches of pattern are deleted and the / fol-
          lowing pattern may be omitted.  If parameter is @ or *,
          the  substitution  operation  is  applied to each posi-
          tional parameter in turn,  and  the  expansion  is  the
          resultant list.  If parameter is an array variable sub-
          scripted with @ or *,  the  substitution  operation  is
          applied  to  each  member of the array in turn, and the
          expansion is the resultant list.

Ja, csak a %-ra keresni szamomra nem egyszeru. Ha legalabb 2-3 karakteres a keresokifejezes (nem a "do", "must" es hasonlok :), akkor konnyen megtalalom. Igy meg csak ido kell hozza, az meg eppen ma nem allt rendelkezesemre :)
(Vagyis igen, mert eleg sokat utaztam, csak laptopom nincs, igy "kenytelen" voltam regenyt olvasni, nem mant :)

Azért van egy többféle shellben használatos módszer ugyanerre:

$ host=blabla.co.ab.
$ echo ${host%?}
blabla.co.ab

Magyarázat: a % azt jelenti, hogy a hivatkozott változó értékének végéről szeretnék valamit leszedni. Megadható konkrét sztring (ekkor nyilván %. lenne a kezdő kérdés szerint), illetve megadható a shell által ismert metakarakterek (amit fájlnév megadásánál is lehet használni: ? * [] ) bármelyike.

Nem teljesen értem a kérdést. Ha sztring elejéről akarsz levágni, akkor # , ha a sztring végéről, akkor % a szükséges karakter:


$ x=alma
$ echo ${x#a}
lma
$ echo ${x%a}
alm

a # vagy % után írod a levágni kívánt adatot. Ez lehet fix szöveg (mint a példában), és lehet * ? [] (azaz a shell joker-karakterei) segítségével megadható minta (de nem REGEXP).

Nem bongeszni akartam, volt egy konkret kerdesem, arra vartam egy konkret valaszt, es ennyi. Annyira nem fontos, hogy utanakeresgeljek akarhol, az ilyen reference cardok meg jo arannyal tunnek el az asztalomon/gepemen.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.