- Motorola Edge 50 Neo - az egyensúly gyengesége
- Google Pixel topik
- További kavarás a Pixel 10-ek körül
- Mobil flották
- One mobilszolgáltatások
- Apple iPhone 16 Pro - rutinvizsga
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Díjnyertes okosgyűrű érkezik júliusban
- CMF Phone 2 Pro - a százezer forintos kérdés
- VoLTE/VoWiFi
Új hozzászólás Aktív témák
-
-
Headless
őstag
válasz
Headless #2657 üzenetére
megoldottam, mivel a fájlokban van egy másik separator, azt feltudtam hasnálni, nyilván a zárt forráskódű fejlesztők is azt használják szeparátornak...
Röviden: grep kikeresem a byteoffseteket a separatorokhoz, majd végig megyek rajtuk while ciklusban, kiszámolom a megfelelő kezdő/végoffset értékeket és azt dd-vel szépen átmásálom. A separatort átírom, hogy ne legyen kereshető, nehogy megtalálja a zárt forráskódú szoftver fejlesztő, vagy bárki más aki rákeresneAz elején van 4 byte felesleg, valamint a separator 8 byte azt hozzáadom az előző byteoffsethez
previousByteOffset=4
imageCount=0
grep -oba ggggggg "$imageFile" |while IFS=: read byteOffset rest;do
dd if="$imageFile" of="$imageFile-$imageCount.jpg" bs=$(($byteOffset-$previousByteOffset)) count=1 skip=$previousByteOffset iflag=skip_bytes
previousByteOffset=$(($byteOffset+8))
imageCount=$(($imageCount+1))
done
-
-
prucam
tag
válasz
Headless #2192 üzenetére
Rendben. Egy kis magyarázat. Elnézést kérek.
Weblapokból, *txt-ékből, file-kből stb. szoktam az awk-val infót gyűjteni, főleg mondatkból. Néha olyan hosszúak a sorok (v. mondatok), hogy nincs kedvem "totozni" az awk-val, hogy most mezőben (mezőkben) van az info.
Ezért gondoltam arra, hátha van az awk-nak olyan funkciója, hogy mutassa meg melyik hányadik mezőben mi van.Saját egyszerű mondat pl.:
egy ketto harom negy ot
Végeredmény ez legyen:
1 egy
2 ketto
3 harom
4 negy
5 otA "read"-es megoldás jó nekem. Persze az adott sort nekem kell bemásolni a file-be. De mindig jobb mintha nekem kell számolgatni.
Az awk-nál meg van "NR==x" is, csak az adott sor számát kell "kitalálni":
Ennyi a magyarázat. Most érthetőbb?
-
beloadjoker
őstag
-
spammer
veterán
válasz
Headless #2059 üzenetére
Szerintem nem fájlnevekről van szó, hanem fájlokról, amikben keresünk (több sorban, és bármelyikben lehet a keresendő kifejezés). Ha feltétel itt most kulcsszót jelent, akkor ilyesmi:
grep -Pzl 'KEYWORD1.*\n.*KEYWORD2' *.txt
grep -Pzo 'KEYWORD1.*\n.*KEYWORD2' *.txtDe pl. ezek sem teljesen jók, mert ha a 2-es kulcsszó van előbb, már nem találja meg.
grep -Pzo 'KEYWORD1.*\n.*KEYWORD2|KEYWORD2.*\n.*KEYWORD1' *.txt
így sem találja meg mindet, mert csak az elsőt veszi figyelembe. Az egrep pedig semmit nem ad vissza ezzel.
awk '/keyword1/ && /keyword2/' *.txt szintén nem működik.
De ha mégsem kulcsszóról van szó, akkor nem ártana tudni, milyen feltételről van szó.
Ha valakit tud profi, egysoros (egy parancsos, nem pipe-os) megoldást a fentiekre, arra (én is) kíváncsi lennék.
-
Jester01
veterán
válasz
Headless #1998 üzenetére
A ciklust akkor dolgozza fel lassan, ha van benne valami lassú. A tiéd tele van külső program indítással (cut, grep, wc, sed) az enyém mind beépített ... garantáltan nagyságrendekkel gyorsabb. Ha nincs bash (vagy kompatibilis) akkor persze mindegy. A kimenet meg úgy néz ki ahogy először kérted
-
Jester01
veterán
válasz
Headless #1992 üzenetére
Tiszta bash megoldás, ami csak egyszer olvassa be a sorokat és semmilyen külső programot nem hív:
#!/bin/bash
declare -a stats
while read line
do
field=${line%;*}
field=${field##*;}
stats[$field]=$((stats[$field] + 1))
done
for field in ${!stats[@]}
do
echo "[$field,$((-100-${stats[$field]}))"
doneJa, ha a nullákat is ki kell írni, akkor simán a számokon kell iterálni, nem a tömbön:
for ((field=0;field<14;field+=1))
do
echo "[$field,$((-100-${stats[$field]:-0}))"
done -
bambano
titán
válasz
Headless #1988 üzenetére
nekem az a problémám ezzel, hogy ha shellben akarod kiértékelni a bájtokat, akkor azt a shell megpróbálja értelmezni. tehát a "$data" behelyettesítéskor nem tudom, hogy mi történik az adatokkal.
ezért lenne jobb ideiglenes fájlba letenni, vagy buherálni kicsit a fájldeszkriptorokkal... mktemp-pel tudsz biztonságosan ideiglenes fájlnevet csinálni.
utána
head -c 65536 dexter.mp4 >$tempfile
tail -c 65536 dexter.mp4 >>$tempfile
md5sum $tempfile"Rosszul értelmeztem a leírást?": nem, én voltam figyelmetlen.
szerk: ez jónak tűnik:
cat <(head -c 65536 dexter.mp4) <(tail -c 65536 dexter.mp4) | md5sum
-
bambano
titán
válasz
Headless #1986 üzenetére
dd-vel így lehet 64k-t beolvasni egy fájlból:
dd if=filenev bs=1024 count=64 of=tempfile
megfordítani egy fájlt a tac paranccsal lehet, tehát a végéről így lehet olvasni dd-vel:
tac filenev | dd bs=1024 count=64 | tac >>tempfileés md5sum tempfile
expertebb júzerek használhatják a head és a tail parancsokat is.
szerk: bocs, elfelejtettem visszafordítani a bájtokat.
-
dabadab
titán
válasz
Headless #1972 üzenetére
Erre a problémára az az általámos megoldás, hogy a kapcsolók után írsz egy dupla kötőjelet:
cat file | grep -- "$var"
Ez nem csak grepnél működik, hanem úgy általában a mindenféle command line tooloknál (az 1992-es POSIX.2 szabványban szerepel irányelvként, hogy ennek így kellene működnie).
Új hozzászólás Aktív témák
Hirdetés
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Eladó Steam kulcsok kedvező áron!
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Sea of Thieves Premium Edition és Egyéb Játékkulcsok.
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- BESZÁMÍTÁS! ASUS Z97-A Z97 chipset alaplap garanciával hibátlan működéssel
- Bomba ár! Toshiba Satellite Pro R50-C - i3-6G I 4GB I 128GB SSD I 15,6" I HDMI I Cam I W10 I Gari!
- Realme 8i 64GB / Normál állapotban / 12 hónap jótállással
- VÉGKIÁRUSÍTÁS - REFURBISHED - Lenovo ThinkPad 40A9 docking station
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest