- Google Pixel 8a - kis telefon kis késéssel
- iPhone topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fotók, videók mobillal
- Google Pixel topik
- Amazfit Active 2 NFC - jó kör
- One mobilszolgáltatások
- Android alkalmazások - szoftver kibeszélő topik
- Milyen okostelefont vegyek?
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
Új hozzászólás Aktív témák
-
prucam
tag
válasz
MacCaine #1449 üzenetére
#!/bin/bash
d=/könyvtár útvonal
for i in `ls $d/`; do
grep '<title>' $d/$i >> $d/title.txt
done
exiteredmény:
<title>Gyilkos törvény - Fórum</title>
<title>Halálos érintés - Fórum</title>
<title>Motorlovagok - Fórum</title>
<title>Vízbe fojtott bűnök - Jindabyne - Fórum</title>
<title>Esküdt ellenség - Fórum</title>
<title>A bűncézár - Fórum</title>
.....Ez nekem eddig tetszik!
1, meg lehet-e adni úgy a keresést, hogy a "title.txt"-be csak a oldal címe legyen. Azaz:
Gyilkos törvény
Halálos érintés
Motorlovagok
Vízbe fojtott bűnök - Jindabyne
Esküdt ellenség
A bűncézár2, v. az elkészült "title.txt"-t kell tovább feldolgozni. Sed v. tr ??? Vagy hogyan?
-
prucam
tag
Sziasztok,
múlt héten kezdtem el foglalkozni a scriptekkel, azaz semmihez sem értek.
A fórumot azért elolvastam az elejétől!
Meg mást is olvasgatok néha.Szeretnék írni egy scriptet, ami a weblapok címét (nem URL), elmenti. Tehát az oldal html kódjában ez van:
<title>A nagy shell script topik - PROHARDVER! Hozzászólások</title>
Gondoltam:
w3m http://prohardver.hu/muvelet/hsz/uj.php?thrid=162198 | grep '<title>' >oldalcim
de ures a doksi. Sajnos nics elképzelésem, hogyan is kellene megoldani. Segítenétek?
köszi
-
sh4d0w
félisten
cat-grep-while trióból érkező kimeneteket hogyan tudom egymás mellé kiiratni?
-
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.
-
vanek
tag
válasz
bambano #1438 üzenetére
Ezt sejtettem
csak arra lettem volna kíváncsi, hogy mit takar az action part...
Mert ahogy látom Jester megoldásában sincs action part.. simán az END után kiírat..abban, hol az action..?
Gondolom az action part egy if, for...vagy valami ilyesmi?
Hasba akaszt? Ezt hogyan értsem ?
-
vanek
tag
válasz
Jester01 #1433 üzenetére
huhh...igazából valami enyhébb megoldásra gondoltam..
még csak tanulom a dolgot, egyik haverom pont most jár egyetemre, ezt veszik, megtetszett és gondoltam belekezdek..
úgyhogy valami ilyesmire gondoltam
#! /usr/bin/awk -f
BEGIN{osszmeret=0;}
END
{
{
osszmeret += $5
print ( $osszmeret)
}
}vagy azért ennyire egyszerűen nem megy? köszi
-
szoke12
őstag
jól van na... kezdő vagyok még, csak ez ugrott be hirtelen.
-
Jester01
veterán
válasz
szoke12 #1430 üzenetére
Ez egy négyzetes megoldás, ha már ciklust akarsz akkor miért nem egyszer mész végig a kimeneten?
Mi van ha időközben megváltozik a fájllista?
Directoryk méretét kell nézni?sum=0
for x in $(find . -maxdepth 1 -type f -printf '%s\n')
do
sum=$((sum + x))
done
echo $sum-vagy-
(find . -maxdepth 1 -type f -printf '%s+'; echo 0) | bc
ls használatával is lehet hasonlót, plusz nyilván a du még mindig erre való.
-
szoke12
őstag
Lehet, kicsit erőltetett módszer, de én csinálnék egy ciklust:
#! /bin/bash
SORSZAM=`ls -l | wc -l`
SORSZAM2=1
MERET=0
while [ $SORSZAM2 -ne $SORSZAM ]
do
FILEMERET=`ls -l | sed -n $SORSZAM2p | cut -f5`
MERET=`expr $MERET + $FILEMERET`
SORSZAM2=`expr SORSZAM2 + 1`
done
MERETMB=`expr $MERET / 1000`
echo "A fájlok mérete: $MERETMB MB."ott az "-ne" körül lehet játszani kell, de most nincs előttem, hogy kipróbáljam.
-
vanek
tag
Üdv!
Olyan kérdésem lenne, hogy hogyan tudom kinyerni az ls -l 5. oszlopának az adatait? pontosítva hogyan tudom összeadni a méretet?
Köszi
-
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
-
puskas1993
tag
válasz
bambano #1415 üzenetére
na sikerült is megcsinálni
ezer köszönet mind kettőtöknek
már csak egyetlen kérdés... ugyebár megcsináltam pipével és hogyan tudnám csak a 2. oszlopát kiiratni??
pl.: data|adat és nekem csak az adat kell a kimenetrelehet a kóddal könnyeb lesz:
if [ -z "$1" ]
then
echo "Kérem legközelebb adja meg a szót, amelyet le kíván fordítani!"
else
TALALAT=$( grep -w "$1" szavak.txt );
if [ -z "${TALALAT}" ]
then
echo "Nincs találat!"
else
# echo A keresett $TALALAT' magyar megfejelője: $(cut -d\ -f 2)"
echo "A '$1' fordítása: $TALALAT"
fi
fi -
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 -
rt06
veterán
válasz
puskas1993 #1412 üzenetére
az exit status-t bash-ben a $? valtozoban tallod
a szokozoket viszont kezzel kell, hogy kiscereld, mivel amire bambano celzott, azon nem segit, ha lecserels (pl sed-del) minden szokozt pipe-ra
pl van egy olyan kifejezesed a szotarban, hogy "eszem f*szom megall", se ennek a megfeleloje angolul az "un f*cking believable" - ez a sor az alabbi lesz a szotaradban:
eszem f*szom megall un f*cking believable
csere utan pedig igy fog kinezni
eszem|f*szom|megall|un|f*cking|believablea gond az, hogy a script egyik esetben sem fogja tudni, melyik szokoz vagy pipa az elvalaszto a magyar es az angol verzio kozott, s melyik resze a kifejezesnek
helyesen ugye igy nezne ki:
eszem f*szom megall|un f*cking believable -
puskas1993
tag
válasz
bambano #1410 üzenetére
sajnos fogalmam sincs hogyan tudnám megnézni mi tárolja a változókat
a fordított aposztrófot ki is cseréltem amire mondtad
a szóközöket 1 perc alatt kitudom cserélni, hogyha szerinted ugy jobb lenne
rt06:
de eleve ugy van, de akkor gyorsan meg is csinálom, hogy "|" /alt gr+w/ legyen a szóköz helyett ha már mind a ketten ezt javasoljátok
-
rt06
veterán
válasz
puskas1993 #1409 üzenetére
a grep kimenetet tedd valtozoba, es azt is vizsgald meg, hogy ures string-e
valtozoba tenni lp igy tudod:
TALALAT=$( grep -w "$1" szavak11111.txt )
ez ugyanaz, mint az alabbi
TALALAT=`grep -w "$1" szavak11111.txt`
viszont a backtick ( ` ) helyett illik a zarojeles megoldast hasznalniezutan egy ulyebb test-etl nezd meg, hogy a TALALAT valtozod ures-e (erre a korabbi != mellett hasznalhato a -z kapcsolo is), pl.:
if [ -z "${TALALAT}" ]
then
echo "nincs talalat"
else
...
fivalamint a megoldasod nem teljesen jo meg, mivel pl az "adat" szot megtalalhato a "data" szora es az "adat" szora keresve is (Felteve, hogy a szotaradban van olyan sor, hogy "data adat"
-
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)
-
puskas1993
tag
válasz
bambano #1406 üzenetére
na sikerült eljutnom odáig, hogy ha nem ír be semmit a felhasználó, akkor kíiírja, hogy adjon meg legközelebb valamit, ha pedig megadott, akkor keres.
#!/bin/bash
# Puskás Dénes / Internetes alkalmazásfejlesztő / 2013. június 22.
if [ "$1" != "" ]
then
#cat szavak11111.txt | grep -w $1
grep -w "$1" szavak11111.txt | echo "A keresett '$1' magyar megfelelője: `cut -d\ -f 2`"
else
echo "Kérem legközelebb adja meg a szót, amelyet le kíván fordítani!"
fimost azt hogyan kellene, hogyha nem találja a szót akkor valamit írjon ki... pl nincs találat ?
-
puskas1993
tag
Bocsánat... Még egyszer leírtam ugyan azt amit már este.
-
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! -
puskas1993
tag
válasz
bambano #1404 üzenetére
#!/bin/bash
if ["$1" == ""]
then
echo rossz
else
cat szavak11111.txt | grep -w $1
fiaz a baj, hogy megtalálja azt a sort amiben szerepel ki is írja, de még előtte kiirja ezt: szotar.sh: 8: szotar.sh: [data: not found
amugy azt, hogyan is tudnám megcsinálni, hogy csak az első vagy a második oszlopát írja ki annak amit eddig kiirt??
pl eddig így írta, hogy: data adat
de nekem csak az "adat" vagy csak a "data" kellene. -
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.
-
puskas1993
tag
Sziasztok!
Szótár programot/shell/ kellene írnok, mely ha rossz vagy semmilyen adatot nem kap a felhasználótól akkor hibaüzenetet írjon ki. Már kész van minden kivéve az, hogyan dobjon hibaüzenetet. Vagyis megvan az is, csak nem teljesen jó.
Valaki tudna nekem ebben segíteni?? Vagy csak átnézni a kódomat?? -
Új hozzászólás Aktív témák
Hirdetés
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- 27%-OS ÁFÁS SZÁMLA I Jogtiszta Microsoft digitális és fizikai termékek I DIGITALKEYZ.COM
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- ÁRGARANCIA! Épített KomPhone Ryzen 7 5800X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Dell P2419H P2419Hc Full HD LED IPS 24" + P2719H 27" LCD monitor (vékony keretes)
- BESZÁMÍTÁS! Apple MacBook Pro 16 M4 Pro 24GB RAM 512GB SSD - garanciával hibátlan működéssel
- AKCIÓ! Dell Latitude 5440 14 FHD üzleti notebook - i5 1335U 8GB RAM 256GB SSD Intel Iris Xe
- Steam, EA, Ubisoft és GoG játékkulcsok, illetve Game Pass kedvező áron, egyenesen a kiadóktól!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest