string csere szótár alapján
Mivel tudnám azt megoldani, hogy egy fájlban cserélgessek szavakat egy szótár alapján?
- Tovább (string csere szótár alapján)
- 1123 megtekintés
Mivel tudnám azt megoldani, hogy egy fájlban cserélgessek szavakat egy szótár alapján?
Hali!
Adott egy konyvtar, amiben van tobb alkonyvtar, azokban tobb file. Bizonyos file-okban bizonyos szoveget le akarok cserelni ("ISO-8859-1"-et "UTF-8"-ra, de nem HTML vagy PHP fileok, config fileok. Itt az elso probaban meg nem is akarok cserelni, csak cat segitsegevel elolvasni ezeket a file-okat.)
Elso otlet:
grep -r keresem * | awk '{print $}' > tmpfile
while read ; do cat $REPLY ; done < tmpfile
Ez ugye visszadna "tmpfile"-ban azon file-ok neveit, amiben benne van a "keresem" szo, masodik sor pedig elolvasna ezeket a file-okat.(Nem az, amit en akarok, de ezen konnyebben mutatom). Es itt jon a bibi: a filenevek szokozt tartalmaznak . Tobb probam is volt:
grep -r keresem * | awk '{print $}' | sed '/\ /\\/g' > tmpfile
a tmpfileban gyonyoru:
xx/yy/file\ neve
De ha ugyanezt beolvastatom a "while read" paranccsal, valami ertelmezi a "\" jelet es eltunteti :(
Valami otlet? Persze, megcsinalhatnam, hogy mondjuka "detox" proggival eltuntetem az osszes szokozt es ugy futtatom, csak sajnos ezek a file-ok havonta frissulnek :(
Hi!
2 apro kerdesem lenne.
1) Van egy valtozo, ami igy nez ki:
adat1:adat2:adat3:adat4:adat5.... Hogyan lehet megkapni a 3. kettospont utani reszt bash expansionnel? Ok,
cut -f 3- -d:megcsinalja, de van erre "csak bashes" megoldas?
2) Legyen adott a fenti valtozo. Hogyan tudok rajta vegigmenni egy ciklussal? Marmint a kettospontok kozotti adatreszekkel. Probaltam az IFS- sel jatszani, de keves sikerrel. 100%, hogy van kismillio megoldas erre guglin, de nem sikerult egyet sem talalnom.
Koszi.
Sziasztok!
Szeretnék egy rakatnyi egy mappában lévő fájlt a imagick-al bmp-ből tga-ra átkonvertálni...
egy fájlt így kell:
convert [fajl.bmp] [fajl.tga]
a baj csak az, hogy a fájljaim tartalmaznak szóközt, és azt hiszi a gépem, hogy több paramétert adok meg...
írtam egy szkriptet:
#! /bin/bash
for i in *.bmp;
do
k=`echo $i | tr ' ' '\ '`; #átírom a ' '-eket '\ '-re, mert azt hiszem így kell neki beadni a szóközt, de lehet nem...
j=`echo $k | tr '.bmp' '.tga'`;
convert $k $j;
done
de sajnos nem műlködik...
Hol a hiba?
Hogy kéne csinálnom?
Köszi: Koli
Sziasztok!
Elore bocsatom, nem tudok perl-ul (es a kesobbiekbol ki fog derulni hogy nem is akarok tudni :]). Szoval a problema a kovetkezo": van egy openwebmail nevu perl-ben irt ize. ez default installal (debian lenny) hisztizik nehany esetben, mikor biz fuggvenyek (md5(), memgzip()) olyan sztringeket kapnak amiben wide char-ok vannak (utf8). Nomarmost az jott le hogy ez a nyelvezet maskepp kezelni a blob-okat es maskepp az utf8-as sztringeket, es az elobb emlitett fv-ek ezutobbiakat nem hajlandoak megenni. Nyilvan a problema szempontjabol rohadtul lenyegtelen hogy az adott sztring utf vagy milyen fiszemfaszom kodolasban van, azt csak le kell tarolni, majd kiadni az egesznek. Kerdes, hogy az egesz perl-ben le lehet tiltani ezt az utf8-as agymene'se't? Az egesz openwebmail-t nem akarom atirni, ha nem muszaj ;) (mar elkezdtem, kiirtottam a memgzip()-et, mondvan hogy http-compressionra nincs szukegunk, deaztan jott tobb hasonlo egyeb, mashol).
thx, A.
hali!
abban kene segitseg, hogy hogyan tudnam megoldani pythonban egy hosszu newline karaktere nelkuli string file-ba irasat ugy, hogy mondjuk 50 karakterenkent uj sort kezdjen.
Egyelőre így mentek diszket (azóta tovább frissült)...
Chain-Q és LGee után szabadon, egy kisebb tudású, csak tarolós-becsomagolós változat, avagy élő rendszerről mit és hogyan tar-oljunk.
Fontos még az adott architektúránál a $(man hier) elolvasása!
#! /bin/bash
# inicializalas
DISZK=/dev/sda
TARFAJL="$DISZK".tar
FAJLOK="$DISZK".print0
SZURO='/\([.].*\|lost.found\|media\|misc\|mnt\|net\|proc\|selinux\|srv\|sys\|tmp\)/..*'
cat /dev/null > "$FAJLOK"
# megkeressuk a tar-olando fajlokat, es kiirjuk a
# fajllistat egy fajlba, ASCCIZ stringekkent
find / \( -type l -o -type d -o -type f \) \
\( ! \( -regex '^'"$SZURO"'$' -o -name "$TARFAJL" \) \) \
-o \( \( -type b -o -type c \) -regex '^/dev/.*$' \) -fprint0 "$FAJLOK"
# GNU-tarolas
tar --no-recursion --force-local -b 1 --null --files-from="$FAJLOK" -cf "$TARFAJL"
# Kesz!
# mar csak /boot/** ertelmezes hianyzik, meg egy $(sfdisk -d > sda.sfdiskscript)
# es persze a fajlrendszerek meghatarozasa a visszaallitashoz szukseges
# mkfs-ezeshez
Ha az alábbi "ls -1 *.rar" parancsot használom pl. rar fájlok listázásakor akkor
pl. valami-10.rar
valami-1.rar
valami-2.rar
stb.
sorrendben kapom meg a fájlneveket. Van-e valami korrektebb módszer amivel rendes sorrendet (1, 2, 3... 10, 11 stb) tudok lekérdezni, anélkül hogy elő kellene nullázám ezeket a számokat (1 -> 01 , 2-> 02 stb)?
Sziasztok!
Szeretném egy mappámban található összes fájlban (és a benne lévő mappákban lévő fájlokban is, stb...) bizonyos szavakat átírni másik szavakra...
pl az alma szót körte szóra.
két kérdés: sed-del hogy lehet egy fájlban kicserélni a dolgoka, és nem új fájlt létrehozni?
(for i in `ls`;do echo $i;done ezzel ki tudom iratni az összes fájlomat...)
Köszi!
Sziasztok!
Gondolom amatőr a kérdés, de még sosem találkoztam a problémával, mert ilyet sosem kellett csinálnom.
Ki kellene adjak egy egyszerű 'cd /x/y/FOTÓ' parancsot bash scriptből, de sehogy sem akarja megenni. A locale UTF-8, a fájlrendszerben jól is látszanak a karakterek, de bash folyamatosan azt dobja h. a könyvtár nem létezik, nyilvánvalóan nem értelmezi a nagy, hosszú Ó-t. Az átnevezés sajnos nem megoldás, valahogyan ezt a könyvtárat kellene használnom.
Kérdés tehát, hogy hogyan is írjuk az Ó-t 'bashul'? :)
Köszi,
Zoli