Hozzászólások
-
SzerzőBejegyzés
-
retaliator44 wrote:Egyébként az a sed-es sor az eredeti feladat megoldása. Van valami elegánsabb megoldás esetleg? A feladat konkrétan: az ls -l második oszlopa kell (a számos), meg a dátumoszlopok.
Az eddigi megoldás még egyszer:
ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’Azért vigyázz, mert symlinkeknél gondod lehet:
lrwxrwxrwx 1 mycroft mycroft 21 2006-10-11 21:29 homepages -> /media/sda8/Homepages
Egy ilyen sorra ez lesz az eredmény:
1 2006-10-11 21:29 homepages ->(Természetesen az összes space-t tartalamzó filenévnél ugyanez előjön)
Ha már emlegettem az awk-t, akkor egy lehetőség:
ls -l | awk ‘{ print $2,$6 }’budacsika wrote:Szia!
Nem túl legáns, de működik. (nálam bizos)
ls -l | cut -d ” ” -f 1,4,5,6,7,8Ez csak spec. esetben működik. (Pl. ha egy filera próbálod meg)
Ugyanis ha több file van, akkor a méret oszlop szélességét az ls -l a „legnyagyobb”-hoz állítja be. Pl:Code:-rwxrwx— 1 mycroft mycroft 168915 2006-05-10 19:42 cincogo.jpg
-rw-r–r– 1 mycroft mycroft 0 2006-10-20 08:40 lista.txtLátható, hogy a csoport és a méret között lehet több space is (sőt általában több van), így elég érdekes lista lesz a végeredmény, hiszen a cut az üres mezőket is mezőnek tekinti.
És akkor még bejöhet olyasmi, hogy lehet olyan rendszer, ami a dátumot nem – jellel hanem space-szel választja el, vagy esetleg olyan filenevek, amik tartalmaznak space-t is.
Ha már ilyen irányban nézelődünk, akkor awk jöhet még szóba, de az már ágyúval verébre kategória 🙂retaliator44 wrote:MyCroft wrote:Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
ls -l | sed „s/[0-9]/{1,2}//”A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
ls -l | sed „s/[0-9]+//”Persze, tényleg, idézőjelben is volt, de hogy a + elé is kell „”, ez meglep. Főleg azért, mert az egrepben szerintem nem kell. Legalábbis nekem ment. Vagy ez minden programban más? Apropó… a [] elé miért nem kell?
Szerk.: még egy kérdés: ha valaminek a kimenete egy ‘ jelet tartalmazó kifejezés, mondjuk
ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’
akkor azt egy scriptben hogy tudom mondjuk echoval egy fileba küldeni?retaliator44 wrote:A következő lenne a kérdésem:
a feladat az, hogy eltüntessük az első számoszlopot az ls -l kimenetéből. Az első működik, a második nem. Van ötletetek, miért?
ls -l|sed s/[0-9]{1,2}//
ls -l|sed s/[0-9]+//
Előre is köszi.Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
ls -l | sed „s/[0-9]/{1,2}//”A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
ls -l | sed „s/[0-9]+//”chris19 wrote:Van egy forrásból fordított MySQL szerverem (4.1.21) és egy olyan problémám volna, hogy az adatbázisba tett ékezetes betűk elvesznek, pedig direct úgy fordítottam, hogy a default charset latin2 és a collation latin2_hungarian_ci. Ez mitől lehet?Lehet h butaságot mondok, de ha jól tudom 4.x-es MySql-től a latin2 csak úgy működik rendesen, ha a connect után kiadod a következő parancsot:
SET NAMES latin2Azt nem tudom, hogy pontosan melyik verziótól kezdve kell, de az biztos, hogy 5.0-nál nekem csak ezzel volt hajlandó rendesen kezelni az ékezeteket.
Vagy esetleg:
Code:if [ ! `expr $1 + 0 2>/dev/null` ]Csak győzz válogatni 🙂 (Ja és itt is előbb ellenőrizni kell, hogy van-e $1)
Ez amit én irtam, a „futnia kell” filet használja (lista.txt).
A szerverek elindítását sztem úgy meg lehet oldani, hogy csinálsz egy my_servers könyvtárat mondjuk a homekönyvtáradban és oda beleteszel egy-egy symlinket minden szerverre, amit esetleg el kell indítani. Így a scriptből csak ezekre a symlinkekre kell hivatkozniElső blikkre valami ilyesmi megoldaná a problémádat:
Code:#!/bin/bashwhile read SOR
do
if [ $(ps aux | grep -c „$SOR”) -eq 1 ]
then
#elinditjuk a szervert
fi
done < lista.txtexit 0
Na jó, jogos, az egy karaktert visszavonom 🙂
Trükközgetni lehetne, pl ilyesmivel, hogy
X=echo ${2:0:1}
És megnézed, hogy az $X egyenlő-e a +,-,/ jelekkel, ha nem, akkor (valszeg) * volt.
De jó lesz az script1 3 * 4 formában is 🙂Szerk:
sőt.. ha nincs kint levédve a *, akkor még azzal is gond van, hogy a második szám, amit ($3)-nak várnánk, az általában nem $3 lesz, hanem „hátrébb” csúszik.
Jobban belegondolva, hülyeség volt amit az előző hsz-ben írtam, sorry :blush:Szia bruit!
A beadandók elkészítése – elvileg – önálló munka. Így ha az itt látott megoldást küldöd el, azt nyílván nem tudom majd ponttal honorálni.
Szerk. (utoljára 🙂 )
Módosítottam a feladatkiírást, hogy a *-gal ne legyen gond. Így az általad kitalált megoldás megfelel a feladatnak, ha azt küldöd el, azt természetesen elfogadom.MyCroft
-
SzerzőBejegyzés
legutóbbi hsz