Új hozzászólás Aktív témák
-
bambano
titán
válasz
SteveBeard #1546 üzenetére
egy változóba össze kellene rakni a kép nevét, utána:
[ -f $kepneve ] && echo "<img src ...."
[ -f $kepneve ] || echo ures kepre mutato link vagy semmi.a forkbombának továbbra sem örülünk
ezt az egész for ciklust jelenlegi állapotában egy darab sed-del helyettesíteni lehet szerintem.
-
bambano
titán
válasz
Speeedfire #1543 üzenetére
az rendben van, de a scriptek első sorába tett speciális formátumú megjegyzésben meg lehet mondani, hogy milyen shell futtassa.
ez linuxon nem annyira fájó kérdés, mert erősen dívik a bashizmus, és a leváltására faragott dash eléggé hasonló. szóval ha ott lemarad, hát lemarad.
viszont solarison, ahol az alap shell az eredeti bourne shell, és nagyon gyakran használnak csh-t is, aminek a szintaktikája totálisan más, ott shell megjelölés nélküli szkriptet írni igen bátor cselekedet. nekem pl.solarison mindig ksh volt a default shellem, az is másképp csinált pár dolgot.
-
bambano
titán
válasz
Speeedfire #1541 üzenetére
csak a lényeg maradt le róla, hogy mivel szeretnéd futtatni.
egyébként a PATH-ot felesleges unset-elni, (szerintem a többit is), ha új értéket adsz neki, felülírja.
-
bambano
titán
ja, látom már, neked nem az a problémád, hogy hosszú a szám, hanem az, hogy a gnumeric nem veszi észre, hogy tizedespontot használtál tizedesvesszőnek. A tizedespontot a magyar nyelv szabályai szerint ezres elválasztónak tekinti.
próbáld meg ideiglenesen angolra átállítani a linuxodat és úgy importálni. vagy próbáld meg libreoffice-vel az importot. -
bambano
titán
"Vagy, írj egy scriptet, ami csinál valamit (minegy mit), ha neki paraméterként átadott dev-ek bármelyikén 95% alá csökken az üres hely.":
#! /bin/bash
echo 'PÁÁÁÁNIIIK!!!!!!!!!'
ennyi.
persze ha figyelembe vesszük azt is, hogy nyilvánvalóan feltolták a vércukorszintjét és azért írt ökörséget, akkor ennél bonyolultabb scrtiptre is szükség lehet. Hint: 95% alá csökken az üres hely részmondatot szerintem nem így akarta megfogalmazni. -
bambano
titán
válasz
SteveBeard #1471 üzenetére
ha a kérdés a forrás ip címre vonatkozik, akkor valahogy így:
a LOCAL_IP= sor helyett:
for LOCAL_IP in ip1 ip2 ip3; doa végére meg egy done.
a szépség kedvéért ilyenkor a TIME_ sorokat kiteheted a ciklus elé. -
bambano
titán
mondom, nem fork bombázunk
a sed másik jó tulajdonsága, hogy a keresés-csere parancsokban nem fixen bedrótozva / jel van, hanem az első karakter a delimiter az s után. ezt akkor érdemes használni, ha vagy a mintában, vagy a cserélendő stringben van (sok) /
tehát:
grep '<title>' |
sed -e 's,^.*<title>[ ]*,,' -e 's,[ ]*</title>.*$,,' >> $d/title.txt -
bambano
titán
idézet a man-ból:
An AWK program is a sequence of pattern {action} pairs and user function definitions.
Az END az end-pattern. Az action, amit utána írsz.
" BEGIN and END patterns require an action." tehát az END-nél nem maradhat le a kapcsos zárójel és közötte valami utasítás.
-
bambano
titán
válasz
puskas1993 #1419 üzenetére
TALALAT=$( grep -w "$1" szavak.txt | cut -d\| -f 2);
rt06: igen. de ha cifrázni akarod, akkor grep "$1|" szavak11111.txt, amennyiben a delimiter a pipe. vagy grep "^$1|"
-
bambano
titán
válasz
puskas1993 #1416 üzenetére
cut -d\| -f 2
-
bambano
titán
válasz
puskas1993 #1414 üzenetére
ha erre eredetileg is vigyáztál, akkor nem feltétlenül kell lecserélni a szóközt, de ha ez olyan házifeladat, amit tanár ellenőrizni fog, akkor a probléma kezelését valahol meg kell említeni.
egyébként meg szerintem a legegyszerűbb ez:
grep "$1" szavak11111.txt || echo nincs találat
a korábbi verzió szerint:
talalat=$(grep "$1" szavak111111.txt)
if [ $? -eq 0 ]; then
echo "A magyar fordítása: $talalat"
else
echo nincs találat
fi -
bambano
titán
válasz
puskas1993 #1409 üzenetére
a bash manualjában megnézed, hogy melyik változó tárolja az előzőleg végrehajtott parancs exit státuszát, azt eltárolod, amikor a grep lefut. utána aszerint lehet választani, ha 0 az exit státusz, akkor talált a grep illeszkedést, ha nem nulla, akkor nem.
a fordított aposztróf deprecated (záros határidőn belül meg fogják szüntetni), mert nehéz egymásba ágyazni. helyette a $( ) javasolt.
a programodban egyébként ott fog borulni a bili, ha szóköz van a szavakban. én mezőelválasztónak |-t szoktam használni (pipeline, csővezeték, altgr+w)
-
bambano
titán
válasz
puskas1993 #1405 üzenetére
azt ugye érzed, hogy felesleges forkot írni ide, abból balhé lesz?
["$1" == ""] ebbe emlékeim szerint kellenek a szóközök. tehát én ezt javaslom:
[ x"$1" == "x" ]
cat | grep helyett grep string filenév
oszlopokat kivagdosni legegyszerűbben a cut paranccsal lehet, pl. cut -d\ -f 1 vagy -f 2
a \ után legalább két szóköznek kell lennie! -
bambano
titán
válasz
puskas1993 #1403 üzenetére
másold ide be a kódrészletet, ami a hibát dobja.
egyébként a 2-es file descriptorra szokás hibaüzenetet írni.
-
-
bambano
titán
válasz
evi1101 #1392 üzenetére
A segítség a mi értelmezésünkben arról szól, hogy ha megakadtál, megsúgjuk azt az 1-2 kulcsszót, amivel továbblendülsz. A segítség biztosan nem jelenti azt, hogy megírjuk helyetted az egészet, az sem nem volna etikus, sem nem volna törvényes.
De erről alig pár hsz-szel korábban már volt itt szó.
-
-
bambano
titán
válasz
szoke12 #1360 üzenetére
alapvetően sehogy, mert amit másik futtatási környezet futtat, azt nem látja.
megkerülni úgy lehet, hogy a deklarációkat egy fájlba teszed, és ponttal beolvasod oda, ahol szintén szükséges.
tehát így:#! /bin/bash
. valtozok.sh
másik megoldás, hogy a változót exportálod a futtatási környezetbe, így a belőle indított al-shellek is látni fogják. a bash manual olvasgatása javasolt az export utasítás környékén. de ez még mindig nem teljes megoldás.
-
bambano
titán
válasz
SteveBeard #1356 üzenetére
a bash nem kezel törteket. szét kell szedned egész részre és tört részre.
-
bambano
titán
van-e valakinek kéznél megoldása a következőre?
van két dvi fájlom, a5-ös méretben, 1-1 oldal. Ezt szeretném úgy kinyomtatni, hogy az egyik egy A4-es oldalon normálisan legyen, a másik ugyanezen oldal másik felén, fejjel lefelé. Tehát hogyha nézem a lapot, az egyik fájl ott van a tetejétől lefelé, normál állásban, a másik a legaljától felfelé fejjel lefelé.a postscripttel egyszerűbb, dvi-ből lehet ps-t csinálni...
(ez egy takarékos módú nyomtatás lenne fél oldalas számla első és másodpéldányának nyomtatására úgy, hogy középen ketté lehessen vágni.)
-
bambano
titán
válasz
PistiSan #1332 üzenetére
a dátum formátumot tedd bele egy változóba, annyival rövidebb lesz leírni.
tehát ne a $(date ...) legyen benne, hanem
a format='+%Y-%m-%d-%H:%M:%S'
és $(date $format)-ot írj.szerintem az jó, amit az lftp-vel csinálsz, ha nem akarod kirakni fájlba, akkor írd közvetlenül a programba.
(lftp
scriptet
létrehozó
parancsok
) | lftp -
bambano
titán
válasz
PumpkinSeed #1322 üzenetére
if [ `$SZAMLALO % 1000 | bc` -eq 0 ]
helyett
if [ `echo $SZAMLALO % 1000 | bc` -eq 0 ]
-
bambano
titán
válasz
nyikszi #1317 üzenetére
a vnstati előtt nem látom a teljes elérési utat.
a #! az nem komment, az egy speciális sor, ami megmondja, hogy a fájlt milyen parancsértelmezővel kell futtatni. és igaza van a kollégának, openwrt-ben alapértelmezetten nincs bash.
de van külön openwrt topic, az aláírásomban látható
mondjuk szerintem itt is elfér ez a kérdés, szóval mindegy.
-
bambano
titán
ha valaki ráér egy kis fejtörésre, akkor egy feladat:
a feladat az, hogy adott a diszken egy oracle-tól letöltött sun java telepítő anyag, azt beavatkozásmentesen fel kell telepíteni. hogy melyik könyvtárba, mindegy, a beavatkozásmentes a kérdés lényege.tehát van egy file: jdk-6u30-linux-x64.bin, azt telepíteni kell.
-
bambano
titán
válasz
SteveBeard #1306 üzenetére
ezzel az a gond, hogy a korábbi mac-eket törlöd vele.
tehát egyszerre kellene felhasználni a prevmac fájl tartalmát ÉS az aktuális mac-eket és mindkettőt kiírni a fájlba.felesleges fork még van benne
-
bambano
titán
válasz
SteveBeard #1304 üzenetére
rendszeres időközönként, például cronnal, kiszeded a mac címeket az arp cache-ből, hozzámásolod egy fájlból a korábban látottakat, sorbarendezed, uniq-kal kiszeded a duplikációt és leteszed ugyanebbe a fájlba.
majd ez alapján gyártod a grafikont.
-
bambano
titán
válasz
SteveBeard #1300 üzenetére
lehet, hogy a macnál kettőspontot használ elválasztásra, nem kötőjelet.
a router felületén kötőjellel van (legalábbis a gyári firmware webjén), a linux kernelben meg nem. -
bambano
titán
válasz
SteveBeard #1287 üzenetére
emlékeim szerint az rm -f nem szól be.
-
bambano
titán
válasz
SteveBeard #1283 üzenetére
a múltkori cuccot, amit faragtál, kitehetnéd publikus helyre (pl. logout blog), hátha mást is érdekel.
-
bambano
titán
válasz
SteveBeard #1275 üzenetére
az echo 1 | awk '{}' helyett awk 'BEGIN {..}' elegánsabb.
-
bambano
titán
válasz
SteveBeard #1269 üzenetére
azt ugye tudod, hogy a routeredben a flash nagyon nem fogja csípni, ha 5 percenként teleírod grafikákkal? ezt külsőleg csatlakoztatott pendrive-on érdemes.
-
bambano
titán
válasz
dabadab #1264 üzenetére
egy 1043nd-ben futó openwrt van most kéznél, amit nézhetek. 32 M ram, 266MHz proc. De ez a risc proc nem az a cisc proc, mint egy 40-50MHz-es 486DX volt anno, ez a több, mint százmillió soros kernel nem az a kernel, ami volt anno, elég csak a tar.gz-k méretét megnézni, a libc sem ugyanakkora, stb.
lehet, hogy összességében egy régi gép hatékonyabb volt, mint ez a router.
-
bambano
titán
válasz
SteveBeard #1260 üzenetére
még annyit lehetne optimalizálni az egészen, hogy amikor az iptables logját mented az ideiglenes fájlba, akkor csinálsz egy kis előfeldolgozást, hogy a későbbi adatbányászathoz egyszerűbb formátumban teszed le az adatokat.
-
bambano
titán
válasz
SteveBeard #1260 üzenetére
két awk-nak egymás után, amik csak kiírnak, nincs értelme.
akkor már elég lenne a két awk helyett egy awk '{print $2}'
ezt még lehetne azzal rövidíteni, hogyha print helyett printf-et használsz, és nem írsz bele soremelést a végére, akkor nem írja ki, tehát a tr-t is le lehet hagyni a végéről.
az egész kb. ennyi lenne:IN=$(grep $IP /opt/test/sum/traffic.tmp | awk '{printf "%d",$2 }' )"
viszont ez a két irányt össze fogja keverni, a bemeneti és a kimeneti irányra is ki fogja írni a forgalmat. tehát kell még bele egy feltétel.
-
bambano
titán
válasz
SteveBeard #1254 üzenetére
"IN=$(cat /opt/test/sum/traffic.tmp | awk '{print $2 " " $7}' | grep $IP | awk '{print $1}' | tr -d '\n' )"
bajok:
- ha a grep $IP-t másodiknak rakod, akkor az első awknak fel kell dolgoznia minden sort, amiben nincs benne az ip, azt is, feleslegesen. tehát ha tudod szűrni, csökkenteni azt az adatmennyiséget, amit az awknak betolsz, azt jobb minél előbb, mert az awk egyébként interpreter nyelv, tehát lassú
- tehát nem cat /opt...| awk | grep $IP, hanem grep $IP /opt/test/sum/traffic.tmp
- ebben az esetben szerintem a két awk összevonható egybe
- például így: awk '{ if ($7==$IP) print $2' }" szintaxist most nem teszteltem terminálban.
- ha a végén úgyis letörlöd a soremelést, akkor egyszerűbb az awk-kal ki sem iratni, megint megspóroltál egy forkot.elvileg az awk-nak lehet kívülről változónak értéket adni, valahogy így a doksi szerint: awk -v IP=192...
és akkor erre tudsz a programon belül hivatkozni. -
bambano
titán
válasz
SteveBeard #1254 üzenetére
azt ugye érzed, hogyha azt írod, hogy:
cat filenev | awk
ahelyett, hogy
awk '{...}' filenev
akkor itten téged virtuálisan keresztre feszítenek? -
bambano
titán
válasz
SteveBeard #1245 üzenetére
cut -d\ -f 5 | cut -d. -f 1
ez gyorsabb és csak két fork ugyanarra a programra. -
-
bambano
titán
válasz
Jester01 #1231 üzenetére
nyilván egy lehetetlen küldetés beírni nálad, hogy apt-get install dnsutils
# nslookup 217.20.130.97
Server: 127.0.0.1
Address: 127.0.0.1#53Non-authoritative answer:
97.130.20.217.in-addr.arpa name = sportgeza.hu.Authoritative answers can be found from:
130.20.217.in-addr.arpa nameserver = ns.index.hu.
130.20.217.in-addr.arpa nameserver = fns.index.hu.
130.20.217.in-addr.arpa nameserver = ns.inventra.hu.
fns.index.hu internet address = 217.20.130.3 -
bambano
titán
válasz
SteveBeard #1226 üzenetére
sed -e 's/\.lan//'
-
bambano
titán
válasz
SteveBeard #1221 üzenetére
nem ártana helyes sorrendbe rakni az aposztrófokat és a kapcsos zárójeleket.
a kapcsos zárójelek közé írt szöveg az awk paramétere, amit a shelltől védeni kell, tehát a helyes sorrend
aposztróf-kapcsos zárójel-awk program-kapcsos zárójel-aposztróf. -
bambano
titán
lehet, nem ide kellene, de 11111
ti hogy csinálnátok?van egy pgsql adatbázistábla, abba elvileg sorban kerülnek be rekordok. van egy id mező, ami bigserial és hagyom a default értéket. vagyis elvileg teljesen sorfolytonos az id mező. de néha mégsem. hogy miért, azt most hagyjuk. a kérdés az, hogy hogy találsz meg egész számokat, amiknek szerepelniük kellene az id mezőben, de mégse?
Jester01?
-
bambano
titán
válasz
SteveBeard #1211 üzenetére
./scriptnev 2>error.log
-
bambano
titán
válasz
SteveBeard #1209 üzenetére
ha írsz egy set -x -et az elejére, látni fogod a debug infókat.
-
bambano
titán
a fordított aposztróf bár helyes, deprecated, javasolt átszokni a $( ) formára.
a többi kérdésedet kifejtenéd részletesebben?
"Ill. írtad, hogy akkor jó, ha nics sok fájl. Ez mennyi fájlt takar?": ez régebben kernel fordítási paraméter volt és 128k volt a mérete, hogy most van-e ilyen korlát és mennyi, nem tudom. tehát a paranccsori paraméterek karakterben számolt összmérete nem lehetett több, mint 128k. 128 betűs fájlnevek esetén 1000 fájl.
-
bambano
titán
for ciklusnak is meg lehet adni, csak ott azt kockáztatod, hogyha sok fájl van, akkor nem fog beférni a bash puffereibe.
tehát lehet ilyet, hogy:
for i in $( find /EbbenA/Mappaban/ -name *.txt ); do
...
donevagy lehet while ciklussal:
find /EbbenA/Mappaban/ -name *.txt | while read filenev; dogrep ... $filenev
done
ha már beforkoltál egy awk-ot, akkor használhatod összeadásra is:
find ... | while read filenev; do
grep "Összes .." $filenev
done | awk '{ sum = sum + $5 } END {print sum}'ezeket fejből írtam, nem teszteltem, de el tudsz indulni vele. Jester01 megoldása is jó (szokás szerint) csak van benne egy-két csillagháborús ötlet is, amit elsőre nem fogsz megérteni
Amiket én írtam, azok meg a faék egyszerű megoldások, viszont van bennük erőforrás pazarlás.
pl. sok grepet forkol. ahelyett jobb lenne egy find ... | xargs grep "Összes ..."| awk megoldás.
-
bambano
titán
lécci súgjatok: shellből hívom postgrest, egy select utasítást használok.
Ennek a selectnek egy számot kellene visszaadnia, ha van a keresési feltételnek megfelelő érték, vagy 0-t, ha nincs. A gondom az, hogyha nincs, akkor üres halmazt ad, nem NULL-t.
Új hozzászólás Aktív témák
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- DDR3 BAZÁR! 8GB 16GB 1333MHz 1600MHz 2400MHz DDR3 memória garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone i5 13400F 32/64GB RAM RTX 4060 Ti 8GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! Microsoft XBOX One S 2TB játékkonzol garanciával hibátlan működéssel
- LG 55C3 - 55" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest