Kezdőlap › Fórumok › Programozás › Segítség Fontos!!!
- This topic has 23 hozzászólás, 7 résztvevő, and was last updated 18 years, 1 months telt el by
uzsolt.
-
SzerzőBejegyzés
-
2007-06-11-13:59 #2063359
Itt pedig a válasz a kérdésedre.
$ cat /home/zsolt/bin/teszt
#!/bin/bashecho Elsõ paraméter: $1
echo
echo Idézõjelen kivül
ls -l | awk {‘print $1’}
echo Idézõjelen belül
ls -l | awk {‘print „‘$1‘„‘}$ teszt szilva
Elsõ paraméter: szilvaIdézõjelen kivül
összesen
drwxrwxr-x
drwxrwxr-x
drwxrwxr-x
drwxr-xr-x
drwxrwxr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxrwxr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxrwxr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
Idézõjelen belül
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva
szilva(kiemelések tőlem)
2007-06-11-15:10 #2063360köszönom
2007-06-13-10:32 #2063361Van nekem egy egybefüggő karaktersorozatom…
pl: 319?1jkdkkw2gkegflvkjvcgji
519v1sdélfksfvmb
67342aklfjklsgjaklgjkgjja
4421?lajsfhléfhléghMindegyikben az a közös, hogy az eleje változó hosszúságú számmal kezdődik.
pl: 319
519
67342
4421Illetve hogy a számok után [a-z] betűk vagy ? áll.
Hogy tudom megoldani, hogy nekem csak a változó hosszúságú számot írja ki? (próbálgattam sed-el de nem jutotam semmire)
Segítségeteket előre is köszi.2007-06-13-12:39 #2063362Az awk-t tudnám ajánlani.
Egy kis segítség:
http://www.gnu.org/software/gawk/manual/gawk.html#Functionsilletve:
http://www.gnu.org/software/gawk/manual/gawk.htmlSquid logelemzést már csináltam vele, de annak a scriptje se ment egyik percröl a másikra 🙁
Sajnos még sokat kell tanulnom, de legalább azt tudom, hogy meg lehet vele csinálni 🙂2007-06-13-12:47 #2063363Van nekem egy egybefüggő karaktersorozatom…
pl: 319?1jkdkkw2gkegflvkjvcgji
519v1sdélfksfvmb
67342aklfjklsgjaklgjkgjja
4421?lajsfhléfhléghMindegyikben az a közös, hogy az eleje változó hosszúságú számmal kezdődik.
pl: 319
519
67342
4421Illetve hogy a számok után [a-z] betűk vagy ? áll.
Hogy tudom megoldani, hogy nekem csak a változó hosszúságú számot írja ki? (próbálgattam sed-el de nem jutotam semmire)
Segítségeteket előre is köszi.Sikerült megoldanom:
(tegyük fel, hogy ki van listáztatva a szövek, és csak azt arom le, hogy-hogy lessz pip-e hozzáfűzva az awk)
awk -F[a-z,?] ‘{print $1}’2007-06-13-15:26 #2063364Ne hülyéskedj már! Egy kicsit mássz bele a reguláris kifejezésekbe, amúgy meg a Büki András-féle Unix/Linux héjprogramozás írójú és című könyvet tudom ajánlani (Kiskapu-nál egy kétezresért hozzádvágják, esetleg még egy kis postaköltséget is felszámítanak, de megéri)
A javaslatom:
sed „s@([0-9]*).*@1@g”Pl.:
$ echo 123456fgnreug | sed „s@([0-9]*).*@1@g”
1234562007-06-13-21:21 #2063365Meg van nekem a könyv.
Majd ha lessz egy kicsit több szabadidőm akkor jobban belenézek, sajnos most vizsgaidőszak van:(
Egyébként tudom, hogy maszek megoldás, de működött és a feladatát ellátta:DAmúgy ezt a @-os karaktert nem találtam sehol a könyvben. Lécci elmagyarázod, hogy működik … azt értem, hogy ([0-9]*).*
de a @1@g azt egyszerűen nem tudom megfejteni.
illetve az elején s@ (Substitute akar lenni?)
Meg a „-t sem látam még sedben használni.2007-06-14-08:30 #20633661. @ – ez csak mezőelválasztó (általában a /-jelet szokták használni, de nekem ez szimpatikusabb, ui. /-jelet többször kell cserélnem, mint kukacot. Ekkor pedig kukaccal „olvashatóbb”.)
2. Ha a (…)-t érted, akkor értened kell a 1-et is. Ha nem érted (legalábbis rosszul hiszed), akkor elárulom, hogy a (..) közötti részt (persze soronként mindig más és más) memóriába/változóba rakja, amire a 1-gyel hivatkozok (a következő, ki nem találod, a 2 lesz).
3. „s” : igen, substitute, tehát csere.
4. Idézőjel: én ezt szoktam, nem az aposztrófot. Az aposztrófot inkább belül szoktam. Az, hogy még nem láttad, vagy hazugság, vagy pedig nem olvastad el rendesen ezt a válaszomat 😉Tehát mit is csinál:
s : a sed cserélni fog
@ : paraméter-elválasztó
([0-9]*).* : olyan mintát keres, aminek az elején számjegyek vannak (ezt eltárolja a memóriában), majd utána bármit (megj.: lehet, hogy az elejére kellene egy ^, hogy a sor elejére illessze).
@ : köv. paraméter jön
1 : ez az, amire cserélni kell, tehát az első eltárolt változót helyettesíti.
@ : opciók következnek
g : globálisan keresse, tehát ne csak soronként egyszer (ami itt most felesleges, de én már megszokásból kirakom).Egyébként ez mind benne van a már említett könyvben, a sed-es fejezetben. Azt a példát, amikor a tizedespontot cseréli tizedesvesszőre, érdemes áttanulmányozni, ui. sok okos dolog van benne.
2007-06-14-13:17 #2063367Köszönöm szépen a felvilágosítást. (Amúgy tényleg átláthatóbb ha / helyett @-ot használok.)
2007-06-14-14:42 #2063368Code:$ cat pld
319?1jkdkkw2gkegflvkjvcgji
519v1sdélfksfvmb
67342aklfjklsgjaklgjkgjja
232421?lajsfhléfhlégh$ cat pld | sed ‘s/(^[0-9]*).*$/1/’
319
519
67342
232421Bocs, látom ezzel elkéstem
mire beküldtem, már volt megoldás. Mentségemre szóljon, hogy kezdő vagyok ezen a fórumon… -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz