- AMD vs. INTEL vs. NVIDIA
- HiFi műszaki szemmel - sztereó hangrendszerek
- Kormányok / autós szimulátorok topikja
- Lenovo Legion és IdeaPad Y széria
- AMD Navi Radeon™ RX 9xxx sorozat
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Nvidia GPU-k jövője - amit tudni vélünk
- Milyen billentyűzetet vegyek?
- Bluetooth hangszórók
Ú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
- AMD vs. INTEL vs. NVIDIA
- Macska topik
- Xiaomi 15 - kicsi telefon nagy energiával
- Autós topik
- Windows 11
- Kézbe fogták az ultravékony Z Fold7-et
- Formula-1
- Ezek a OnePlus 12 és 12R európai árai
- HiFi műszaki szemmel - sztereó hangrendszerek
- Nem növel telepméretet a Galaxy S26 Ultra
- További aktív témák...
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Vírusirtó, Antivirus, VPN kulcsok
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- BESZÁMÍTÁS! Gigabyte B760M i5 14600KF 64GB DDR4 512GB SSD RTX 3080 10GB Corsair 4000D Airflow 1000W
- Azonnali készpénzes INTEL CPU NVIDIA VGA számítógép felvásárlás személyesen / postával korrekt áron
- ÁRGARANCIA!Épített KomPhone i3 10105F 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- Dell P2419H P2419Hc Full HD LED IPS 24" + P2719H 27" LCD monitor (vékony keretes)
- HPE Apollo 4200 Gen9 2U rack szerver, 1x E5-2620v4, 64GB RAM, 24x3.5" 2U-ban! ÁFA-s számla, garancia
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest