Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 7 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2008-04-26-13:53 #2053539
Amennyi idő alatt ezt leírtad a backslash tengert is kibogoztad volna. 😀
Akkor röviden.
A spaceket cserélem ” „-re, a gond „[]” karakterek.
A könyvtár neve: [2003] Sphynx
Ha terminálból fut a script cseréli a „[” és „]” jelet „[” és „[” és műxik.
Ha Thunarból használnám, akkor nem cseréli, de csak ezeket a jeleket, a spaceket és a „()” karakterek feldolgozza.Ahogy mégegyszer megnéztem, érdekes mód a „]” utáni spacehez sem rak backslash-t, de az összes többihez igen.
Fura…Az idézőjeleket majd kipróbálom, terminálból megette, arra emlékszem, de scriptben nem próbáltam ha jól rémlik.
2008-04-26-15:43 #2053540A szögletes zárójelek nagyon aljasok a regexp-ben, (ugyebár „választható” szetet jelöl) ugyanis van olyan program, amelynek direktben kell megadni (pl a vi ex-e), ott a backslash szögletes jelöli a normál karaktert, és van olyan (ha jól rémlik, a perl ilyen) ahol a backslash szögletes a kitüntetett, és a backslash nélküli normál, tehát fordítva.
Egyszer régen láttam egy táblázatot a regexp-röl, hogy hol mit jelentenek a különbözö dolgok (csillag, szögletes, egyszerü, kapcsos, pluszjel,…) hogyan kell sh-nak, bash-nak, perl-nek, awk-nak, sed-nek, ex-nek… és mindegyik kicsit legalább más volt.
Kellemes tépödést, mert tudni kell, mi a „fogadó” regexpje…
2008-04-26-15:47 #2053541Gondolom nincs meg az a táblázat? 🙂
A „fogadó” a „#/bin/sh”, majd a sed program.
Lehet én nem értem a dolgot, de a példámban a „fogadó” mindig ugyanaz, az én hibám akkor jön elő, ha a „küldő” más.2008-04-26-16:40 #2053542A „[„-ekkel nem lehet gond mivel annak a unix karaktere is „[„, csak a se paramétereként (vagy mi) kell megadni „[„-ként, de az meg „statikus”, tehát nem egy pattern változó tartalmazza. Maga a szöveg, amit szűrni kell, az meg lényegtelen, mert a „[” mindig „[” marad. (Max. akkor kell cserélni, ha a feldolgozóban jelent valamit, mint pl. a „”. Szerintem a mocp – bár nem próbáltam – „[„-t ugyanúgy értelmezi. A space-eket viszont nem.)
Egyébként meg hiába raksz be „”-t a „[” elé, mert a következő pipe-nál vissza fogja cserélni a „[-t” „[„-re mivel a „[” = „[” (kiv. ahol jelentése van, ahogy már említettem). Ha azt akarod, hogy megmaradjon, akkor „\[„-re kell cserélned, mert ez már nem „[” lesz, hanem egy „” + „[„. Nade, mivel ezt már nem fogja neked visszaalakítani automatikusan, ezért, ha ezt adod meg közvetlenül pl. útvonalban paraméterként, akkor hibás lesz az útvonal… természetesen, mert abban nincs „”… Ha pl. file-ba mented, akkor jó, mert akkor „[” beleírni, de, ha paraméterként (bináris stringként) kezeled, akkor neked kell gondoskodni a visszaalakításról
Ezért mondtam, hogy hacsak a fogadó program nem ígényli a „[„-t, „[” helyett akkor nem szabad vele foglalkozni, mert csak bonyodalmat okoz.A terminal és script között van egy óriási különbség. A terminal nem alakítja át a unix jeleket. Tehát egy ” ” ” ” marad és azt kapja meg a program, majd ő alakítja ” „-szé… ezért működik helyesn.
A file-ban a fordító át fogja alakítani a ” „-t ” „-szé, mivel ez unix és unix-ban a „”-nek jelentése van. Így a program nem ” „-t fog kapni hanem egy szimpla ” „-t és megvan a baj…2008-04-27-08:06 #2053543Kiszedtem a „[]” jelek lecserélésére vonatkozó részt és működik. 🙂
Köszi!2008-05-07-21:24 #2053544sziasztok
lehet hogy elég hülye kérdés meg minden de nagyon szükségem lenne, egy olyan megoldásra, amivel egy fájl elejére tudok irni egy sort.
ugye ha egy adott fájlba valamit bele akarok irni akkor:echo „valami” > x.txt
ha a végére akkor
echo „valami” >> x.txt
na de hogyan kell ha én a fájl elejére akarok irni?
előre is köszi, elno
2008-05-08-06:41 #2053545Code:echo -e „new line\n`cat file`” > fileinfo a benne szereplő parancsok magyarázatáról:
Code:man echo cat2008-05-08-10:51 #2053546működik, köszönöm szépen.
üdv, elno
2008-05-08-12:29 #2053547Esetleg egy kicsit „másabb” megoldás:
Code:(echo Első sor ; cat fájl) > új_fájlPersze akár awk-val is meg lehet csinálni 🙂
2008-05-08-13:40 #2053548Névtelen
…szükségem lenne, egy olyan megoldásra, amivel egy fájl elejére tudok irni egy sort.
Gedit-el is meg lehet oldani. 😛 🙂
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz