- Reklámblokkolók topikja
- Nagy AI-egyezségre készül az Apple és a Google
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Windows 11
- Linux kezdőknek
- Synology NAS
- Ubiquiti hálózati eszközök
- Az NVIDIA már a felhőből kutatja a 6G-t
- Aliexpress tapasztalatok
- Erőszakos tartalomba fut a gyerek, ha internetezik
Új hozzászólás Aktív témák
-
-
-
prucam
tag
Sziasztok,
a "sed"-el elakadtam…
Van egy változóm:
g=7 #a tartomány utolsó sorameg két parancsom ami nem mükődik:
sed -n '2,$gp'
sed -i '2,$gd'Mi a helyes forma?
Ill. lenne egy kérdésem is. A tartomány határait megadhatjuk-e szavakkal is?
PL.:
sed -n 'ettől,idáig'üdv
-
Jester01
veterán
Nem teljesen tiszta mit szeretnél, de első tippem ez: sed -n "2,${g}p"
Másik kérdésre: igen, meg lehet adni regexet, ami alapesetben a szónak is megfelel ha éppen nincs benne speciális karakter. A szavakat perjelek közé kell tenni vagy az alternatív \c...c delimitációt használni. Tehát sed -n '/ettől/,/idáig/'
Jester
-
-
Keeperv85
nagyúr
Sziasztok!
Nem értek a shell scriptekhez ennyire, illetve jobb megfogalmazás, hogy egyáltalán nem értek hozzájuk, szóval megköszönném ha megmondaná valaki eme rövid kis szösszenet tulajdonképpen mit is csinál, ugyanis módosítanom kéne úgy, hogy az én eszközömmel is működjön, ami nagyon nem HTC.Íme, erről lenne szó:
#!/bin/sh
echo " Searching for bricked device..."
sleep 2s
dmesg | sed -ne '/sd.27 sd.28/{ s/.*\(sd.\):.*/\1/p ; q }' |grep "sd" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "The bricked device is on"
dmesg | sed -ne '/sd.27 sd.28/{ s/.*\(sd.\):.*/\1/p ; q }'
echo "Use the above node to perform operations using the emmc_recover tool"
else
echo "Device can't be detected. Check connections"
fi
#Detect script is part of the HTC unbricking project
#Credits Dexter93, Fuses, MOVZX, RussianBearAzt értem, hogy a dmesg mit csinál és egy kósza találkozásom volt már a sed-el is valami kapcsán, de nem ilyen szinten....
-
Jester01
veterán
válasz Keeperv85 #1709 üzenetére
Ez egy igen borzalmasan megírt script de a célnak gondolom megfelel.
Egy sort bogarászik ki a dmesg kimenetéből, ami illeszkedik az sd.27 sd.28 regex mintára majd abból kiírja a kettőspont előtti sd. részt. (A pont regexben egy darab tetszőleges karaktert jelent.)Nem tudom pontosan melyik sorokra keres, de van egy olyan érzésem, hogy a partíciókat kiíró sorból keres olyat amiben van 27-es és 28-as partíció is majd kiírja ezen eszköz nevét. Ilyesmi sorról lehet szó:
sda: sda1 sda2 < sda5 sda6 sda7 sda8 sda9 >
Persze itt csak 9-ig van partíció, de a script olyat keres amiben 28-ig van, és annak az eszköznek a nevét írná ki (jelen esetben az sda)[ Szerkesztve ]
Jester
-
Keeperv85
nagyúr
válasz Jester01 #1710 üzenetére
Köszi!
Ez nem túl jó hír számomra, mert feltételezi azt, hogy az eszközöm, ami jelenleg láthatólag nem jut túl a PBL szekción, egyetlen érvényes meghajtót sem indít el, ugyanis a csatlakoztatáskor a dmesg annyit ad inputra, hogy:
[42276.860131] usb 1-1: new high-speed USB device number 20 using ehci_hcd
[42276.994412] usb 1-1: string descriptor 0 malformed (err = -61), defaulting to 0x0409
[42276.997252] qcserial 1-1:1.0: Qualcomm USB modem converter detected
[42277.000826] usb 1-1: Qualcomm USB modem converter now attached to ttyUSB0Így igen nagy valószínűséggel végleg sikerült a gazdájának a másvilágra küldeni...
-
Keeperv85
nagyúr
válasz Jester01 #1712 üzenetére
Maga az eszköz sajnos képtelen fizikailag bekapcsolni (még a kontroll led sem megy), mivel a gazdája sikeresen flashelt rá egy nem ide való firmware-t. Mivel ez egy ARM7-es architektúra, így van egy biztonsági zóna a flashben, amit nem lehet sehogy felülírni, ebben van a prebootloader, ami most el is indul szépen. Viszont innen nincs tovább, mivel az egyetlen érdemi megoldás a Qualcomm QPST szoftvere csak akkor tud partíciós táblákat felírni, ha megvan a teljes firmware ehhez is. Nincs meg és a gyártó soha sem fogja oda adni...
[ Szerkesztve ]
-
csiki_92
aktív tag
Sziasztok!
Adott az alábbi shell script:
(cat <<EOT
1;2;3
4;5;6
7;8;9
EOT
) > matrix.datn=0;m=1;j=0;k=0
for i in `cat matrix.dat| tr \; \ `; do
m=$(expr $m \* $i)
let n++
k=$(expr 1 / $n)
j=$(expr $m**$k)
doneEz egy 3x3-as mártix mértani közepét számolná ki, viszont olyan problémám van vele, hogy a K=1/9-et, ami 0,1111111... 0-ra kerekíti, így az m a k-adikon, valójában m a 0-dikon lesz, ami ugye 1, és ez által az eredmény hibás lesz.
Valaki tudna nekem egy megoldást arra, hogy a k-ban megőrizze a 0,11111... eredményt, és ne kerekítse le 0-ra?Előre is köszi.
-
-
csiki_92
aktív tag
válasz bambano #1715 üzenetére
Nem tudom, hogy mire gondolsz, terminálban kell csinálnom. Szóval ez a cucc közvetlenül a terminálban van írva, és a zh feladatban mértani közép kell, ami azt jelenti, hogy mindenképpen kéne nekem a tizedes tört.
Esteleg úgy nem lehet valahogy megoldani a problémát, hogy nem 1/9-dik hatványra emelem, hanem 9. gyököt vonok belőle, valamilyen parancsal?[ Szerkesztve ]
-
válasz Claude Leon #1717 üzenetére
bc-ben a scale= utasítással állítható.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
csiki_92
aktív tag
válasz Claude Leon #1719 üzenetére
Köszi a segítséget mindkettőtöknek.
-
ngabor2
nagyúr
Egy gyűjtőmunkát szeretnék egy szkripttel meggyorsítani. Részben már meg is van, kaptam igen hathatós segítséget.
Most viszont egy php-s részt kellene működőképesen leszedni. Van a Cégközlöny, ahol folyamatosan jelennek meg az új cégek. Sok-sok sorból állnak, 50-esével rendezve. Ami nekem kell, azoknak a nevét, sorszámát kigyűjtöttem, sőt a dowload.php-hoz tartozó paraméterek is rendelkezésre állnak (így lehet, hogy zavaros, de ha megnézitek az oldalt, akkor érthető lesz).
Tehát például egy jellemző táblázatsor így néz ki:
<tr>
<td width="15" align="right" class="szoveg">1.</td>
<td width="60%" class="szoveg" align="left">cégnév</td>
<td align="center" class="szoveg">xx-xx-xxxxxxx</td>
<td align="center" class="szoveg" width="120">Új társaságok bejegyzése<br></td>
<td align="center" class="szoveg" valign="middle" width="50"><form method="post" action="download.php" target="_blank" style="margin:0px;"><input type="hidden" name="ajdi" value="7167785" /><input type="submit" value="letöltés" name="subbut" class="szoveg" /></form></td>
</tr>Az utolsó sorban szerepel, hogy melyik letöltőoldal nyíljon meg. Viszont ez érthető módon csak az eredeti oldalba beépítve működik. Ki lehet szedni ezt, és át lehet tenni egy másik fájlba, hogy ott is működjön?
Vagy a fenti php-nak címsorban nem lehet átadni a szükséges paramétereket? Mert akkor minden letöltéshez lehetne 1-1 címet generálni, amit azután be lehetne tenni egy nagyon egyszerű oldalba.
Csavar benne, hogy a mutatott oldalon sok esetben több lap van, amiket csak captcha beírásával lehet letölteni. Ezt nem lehet megkerülni, de legalább a monoton részét szeretném automatizálni.
[ Szerkesztve ]
-
ngabor2
nagyúr
Újabb, életszerű és nehéznek tűnő probléma: elírt szavak keresése. Az előző feladathoz kapcsolódik. A szkript megtalálja a szövetkezet szót, de pl. ha ki van belőle hagyva egy betű, vagy fel van cserélve, akkor már nem. Keresgélek programokat, amit be tudnék illeszteni, és a szavakat egyenként be lehetne neki adni, hogy nézze meg: azonos, hasonló, vagy semmi közük egymáshoz. A hasonlót egy külön helyre gyűjtené, az azonossal meg ugyan úgy bánna, mint eddig. Egyelőre eddig jutottam, külön álló programot még nem találtam.
(Ahhoz képest, hogy egy egyszerű szűrő-szkriptnek indult, már elég sok dolgot kellene tudnia )
-
-
-
Jester01
veterán
válasz ngabor2 #1726 üzenetére
Összedobtam egy kis progit, de nem shell script
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <stdbool.h>
#define ELEMENT char
#define EQUAL(a, b) ((a) == (b))
#define OFFSET int
#define NOTE_DELETE(ctx, xoff) note_delete(ctx, xoff)
#define NOTE_INSERT(ctx, xoff) note_insert(ctx, xoff)
#define EXTRA_CONTEXT_FIELDS
#undef MIN
#undef MAX
#define MIN(a, b) ((a) <= (b) ? (a) : (b))
#define MAX(a, b) ((a) >= (b) ? (a) : (b))
struct context;
static void note_delete(struct context* ctxt, int xoff);
static void note_insert(struct context* ctxt, int xoff);
#include "diffseq.h"
static int cost = 0;
static void note_delete(struct context* ctxt, int xoff)
{
cost += 1;
}
static void note_insert(struct context* ctxt, int xoff)
{
cost += 1;
}
int main(int argc, char** argv)
{
struct context ctxt;
int len1 = strlen(argv[1]);
int len2 = strlen(argv[2]);
int diags = len1 + len2 + 3;
ctxt.fdiag = calloc(2 * diags, sizeof(*ctxt.fdiag));
ctxt.bdiag = ctxt.fdiag + diags;
ctxt.fdiag += len2 + 1;
ctxt.bdiag += len2 + 1;
ctxt.too_expensive = len1 + len2;
ctxt.xvec = argv[1];
ctxt.yvec = argv[2];
compareseq(0, strlen(ctxt.xvec), 0, strlen(ctxt.yvec), false, &ctxt);
printf("%d\n", cost);
return (cost == 0) ? 0 : 1;
}A diffutils-ból kell hozzá a diffseq.h fájl.
$ ./a.out ablak ablak
0
$ ./a.out ablak albak
2
$ ./a.out ablak alak
1[ Módosította: ngabor2 ]
Jester
-
ngabor2
nagyúr
-
ngabor2
nagyúr
Felmerült még egy kérdés a szkripttel kapcsolatban: win alól futtathatóvá lehet valahogy tenni? A cygwin-t nézegetem, de ahogy látom, nem ez lesz a barátom. Ezen kívül win alá kellene a wget és a grep, nomeg a seq se árthat. wget az van, használtam is. De a másik kettő...
Az időközben teljesen átszabott szkript amúgy így néz ki:
#!/bin/bash
echo -n "Közlöny száma: "
read -e szam
echo -n "Oldalak száma: "
read -e oldal
cp /home/ngabor2/kozlony/fej.html /home/ngabor2/Asztal/szoc$szam.html
for i in $(seq 0 $oldal);
do
wget -np http://cegkozlony.hu/index.php?pagename=atkual\&oldal=$i\&friss_ev=2014\&friss_szam=$szam -O - | grep szociális -i -B 2 -A 3 -h | grep szövetkezet -i -B 2 -A 3 -h >> /home/ngabor2/Asztal/szoc$szam.html
doneA fej.html egyszerűen egy táblázat fejléc, amit az eredeti oldal is használ, meg egy új sor: <base href="http://cegkozlony.hu"> .
Lényegtelen mellékkérdés: miért kerül bele a végeredménybe jópár "--" elválasztó karakter, és hogyan lehet kiszedni? Tippre a grep teszi bele.
-
Rickazoid
addikt
Háromból egyszer, amikor nyitok egy terminál emulátort, ezt az üzenetet kapom:
bash: /etc/bash.bashrc: Engedély megtagadva.. bár hibát látszólag nem okoz, de azért zavaró.
A jogosultságok rendben vannak, 755. A /etc mappának szintén.[ Szerkesztve ]
Erkölcstelen csíkot húzni a másik krumplifőzelékébe csak azért, hogy legyen egy szünet.
-
ngabor2
nagyúr
válasz ngabor2 #1732 üzenetére
Alakulok, alakulok, de még messze vagyok még.
A pontos megoldássan beírt "Szociális Szövetkezet"-eket gond nélkül megtalálja a lenti szkript.
Viszont a hasonlók kigyűjtését legfeljebb elméletileg bírtam végigvinni, vagy úgy se.
Első részfeladathoz egy kis segítség magamnak:
#!/bin/bash
string="elem1 elem2 elem3"
hossz=$(echo $string| wc -w)
for i in $(seq $hossz)
do
echo $(echo $string | cut -d" " -f $i)
doneEz egy többszavas sorból egyenként adja vissza a szavakat (biztos van rá alapból egyszerűbb módszer ). Az utolsó előtti sor első echo-ja helyett mehetne az összehasonlítás. Ezt kell a Jester által írt progival összehasonlítani 4 szóval (mert a 2 szó lehet végig nagybetűvel is). Ahol egy sorban 2 db 0 van, azt a korábbi szkript is megtalálja. Ha egy 0 van benne, a többi nagy szám, az nekünk nem kell. Ha viszont van 2 kis szám (pl. 5 alatti, az egyik akár 0 is lehet), akkor az a szakasz kell.
Ami nekem problémát okoz, hogy egyrészt oldalanként 50 darab 5 (pontosabban 7) soros szakasz 3. sorának egy részletét kell vizsgálni, és ha ott van 2 hasonló, de nem azonos szó, akkor azt a szakaszt változatlanul át kell másolni egy fájlba. És ez meg sok-sok oldalon keresztül...
Egy másik fórumtárstól kaptam egy awk szkriptet, amivel a html-ből kiszedi a sorokat:
awk '\
BEGIN { IGNORECASE = 1; output = ""; }\
/<td width="15" align="right" class="szoveg">/ { match($0, ">(.*?)<", a); output = a[1]; }
/<td width="60%" class="szoveg" align="left">/ { match($0, ">(.*?)<", a); output = output "; " a[1]; }
/<td align="center" class="szoveg">/ { match($0, ">(.*?)<", a); output = output "; " a[1]; }
/<td align="center" class="szoveg" width="120">/ { match($0, ">(.*?)<", a); output = output "; " a[1]; }
/--/ { match(output, ".*szociális.*szövetkez[^<]*", b); if ( b[0] != "" ) print b[0]; }
' szoc.txtEbből igazából csak a /<td width="60% kezdetű részre, meg a körítésre van szükség, és az ebben levő szavakat kell vizsgálni. Viszont hogy határozatlan mennyiségű számból hogyan lehet megállapítani, hogy van-e benne 2 db 5 alatti, az már nem az én súlycsoportom... meg úgy egy az egyben az egész.
IMHO lassan eljut ez a projekt arra a szintre, hogy nem egy szkript a legkézenfekvőbb megoldás erre.
[ Szerkesztve ]
-
snowdog
veterán
Sziasztok!
Az egyik scriptemben irányt szeretnék számolni. Az alapképlet így néz ki: Decimal value = ((180+A)*PI)/0.180
Az eredmény egy decimális szám, az "A" az irány fokban.Ez működik, de most visszafelé szeretnék számolni, vagyis a decimális számot ismerem, és az "A" értékét szeretném eredményül kapni. A = ?
Köszönöm a segítséget.
-
prucam
tag
Sziasztok,
van egy file, aminek az utolsó előtti sorába kellene beszúrni a mai dátumot.
változó:
v=`date +%Y%m%d`
Hogyan, mivel? Talán sed...
-
44kos
tag
Sziasztok!
Shell scriptben hogy tudok egy változó értékéül adni törtszámot úgy, hogy azt egy osztás eredményéül kaptam?
pl
echo 5 / 2 | bc -l -> ez kiírja hogy 2.500000Nekem viszont olyat szeretnék, hogy pl s=5 / 2, és ezt ne egészosztásnak vegye, hanem törtszámot adjon végeredményül.
s=`expr 5 / 2 | bc -l` -el próbálkoztam eddit, de az 2-t ad...
Aki tud ebben nekem segíteni, az kérem segítsen, köszi!
-
-
prucam
tag
Sziasztok,
előzmény #1740 hsz.
Most a file második sorába kellene beszúrni a dátumot. Azt is áruljátok el:
- hogyan lehet az első sorba
- valamint x. sorba.üdv
Új hozzászólás Aktív témák
- Samsung Galaxy A05s - az ötösért több kell
- Milyen processzort vegyek?
- Építő/felújító topik
- Elektromos (hálózati és akkus) kéziszerszámok, tapasztalatok/vásárlás
- „Filléres” Z Fold6-tal készül a Samsung?
- gban: Ingyen kellene, de tegnapra
- Kormányok / Autós szimulátorok topicja
- Death Stranding (PC)
- Reklámblokkolók topikja
- Nagy AI-egyezségre készül az Apple és a Google
- További aktív témák...
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Windows 10 Home COA fizikai licencek kiárusítás ingyenes szállítással
- Steam kulcsok - 990/1500 HUF - Life is Strange/Road 96/Saints Row/Scorn/Warhammer- UTALÁS/REVOLUT
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok