Üdv!
Shell scriptben hogyan tudnám azt elérni, hogy mindent ilyen formában tudjak kiírni:
abc/def/xyz
és ne így:
./abc/def/xyz
már próbálkoztam sed-el, awk-al, cut-al, egyik sem jött be, teljesen tanácstalan vagyok, minidg csak a végéből sikerült levágnom a ./ -t soha.
Előre is köszönöm a tanácsokat
- 3091 megtekintés
Hozzászólások
$ a="./abc/def/xyz"
$ echo $a
./abc/def/xyz
$ echo ${a#./}
abc/def/xyz
$ echo $a | sed "s#^\./##"
abc/def/xyz
$ echo $a | cut -d/ -f2-
abc/def/xyz
$ echo $a | awk '{print substr($0,3);}'
abc/def/xyz
- A hozzászóláshoz be kell jelentkezni
alapos vagy :)
- A hozzászóláshoz be kell jelentkezni
Akartam írni, hogy a perl-verziót kihagytad, de látom, az nem volt kérdés :-)
- A hozzászóláshoz be kell jelentkezni
Bennem is maradt egy kis hiányérzet
(
$ echo $a | awk -F'^\\./' '{print $2}'
abc/def/xyz
sőt, a bashista
$ echo ${a:2}
abc/def/xyz
), de leküzdöttem.
... eddig.
- A hozzászóláshoz be kell jelentkezni
Basszus, anchor-ral tűzdelt regexp-et mezőszeparátornak. /me csettint.
- A hozzászóláshoz be kell jelentkezni
No, annyira tetszik, vagy annyira nem?
Örömmel olvasom alapos emberek alapos kritikáit.
- A hozzászóláshoz be kell jelentkezni
tecc. Eleve ritkán látok regexp-et FS-nek értékül adva; nade így, szerintem életemben nem láttam még. Holott akár logikusnak is minősithető.
- A hozzászóláshoz be kell jelentkezni
Megnyugodtam - kritikát meg majd olvasok magamról máshol. :)
- A hozzászóláshoz be kell jelentkezni
mivel úgy látom itt lehet kreatívkodni, itt egy bash megoldás :)
x="./abc/def/ghi"
if [[ $x =~ ^./ ]];then x=${x:2}; fi
szerk, most látom csak, h már (részben) ez is volt... na mind1
üdv.:
-szobi.
- A hozzászóláshoz be kell jelentkezni
Pár évvel ezelött nagyon utáltam a következő kérdést:
minek ez neked?
gondolom file neveket kezelsz.
FNAME=./alma
cd /tmp
touch $FNAME
echo $FNAME
readlink -f $FNAME
echo $(pwd)/$FNAME
ls -i $FNAME
ls -i $(pwd)/$FNAME
A legtobb shell parancsot nem zavarja kozeputt a /./ sem a ./ az elejen.
Ha egy filelistat akarsz csinalni, akkor a readlink -f gyakran hatasos.
- A hozzászóláshoz be kell jelentkezni
Az ilyen kérdésere anno jó ha olyan választ kaptam, hogy man cut (awk, bash, sed, kb. bármelyik jó):
fisher@zsebi:~$ a="./abc/def/xyz"
fisher@zsebi:~$ echo $a | cut -c3-
abc/def/xyz
Csak hogy legyen még egy, alig más megoldás.
- A hozzászóláshoz be kell jelentkezni
+1
--
A legértékesebb idő a pillanat amelyben élsz.
http://phoenix-art.hanzo.hu/
https://sites.google.com/site/jupiter2005ster/
- A hozzászóláshoz be kell jelentkezni
sed 's/.\/\(.*\)/\1/'
- A hozzászóláshoz be kell jelentkezni
Per- és repjelfetisiszta vagy?
sed 's@^\./@@'
- A hozzászóláshoz be kell jelentkezni
most szigorúan erről az esetről beszélek, de:
sed s/..//
Jelzem sipeki eredeti megoldásából a legelső pont elől hiányolom fent említett repjelet.
- A hozzászóláshoz be kell jelentkezni
Najó, két napja azon gondolkozom, hogy hogyan lehetne csigát ("\_@_) vagy valami hasonlót felhasználni akár sed-ben vagy hasonló regexpes (vagy bármilyen) mókában az adott - súlyos - probléma megoldásában... egyelőre nem állok jól :(
Pedig akkor még érdekes is lehetne a feladata :D
Update: most nézem, hogy nem két napja, csak reggel óta... kicsit sűrűek a napjaim, ehe.
- A hozzászóláshoz be kell jelentkezni
Köszönöm az építő hozzászólást, valóban lemaradt.
- A hozzászóláshoz be kell jelentkezni
:D
- A hozzászóláshoz be kell jelentkezni