Hirdetés

2024. április 20., szombat

Gyorskeresés

Hozzászólások

(#1101) Jester01 válasza bambano (#1100) üzenetére


Jester01
veterán

man sed
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)

Jester

(#1102) bambano válasza Jester01 (#1101) üzenetére


bambano
titán
LOGOUT blog

érdekes manualod van...
man sed | grep in-place | wc -l
0

:R

közben megnéztem, a magyar man régi. kösz.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1103) CPT.Pirk


CPT.Pirk
Jómunkásember

Még egyszer, elvileg utoljára kérnék egy apró segítséget. Szeretnék egy egyszerű, állapotjelzőt csinálni a lenti, már ismert kódhoz. Most úgy van, hogy 1 másodpercenként érkezik adat, mikor ez megtörténik, akkor szeretnék egy karaktert kiírni a képernyőre.

[#### ]

Valami ilyen totál egyszerű formában, zárójelek se kellenek.

NR<43 { a[NR]=substr($0,1,4); b[NR]=substr($0,5,4); }
NR>43 { exit 0; }
END{
for(i=1;i<43;i++) if(a[i] > 0) printf ("%4.3f,%d,%d,%d,%4.3f\n",20*(log(a[i]/4095)/log(10.0)), i, a[i], b[i], ((a[i] + a[i+2$
}

Egyébként szépen működik a kód és vele együtt a komplett Wobbler szkóp is. Ezúton is köszönöm a segítséget mindenkinek. :R

[ Szerkesztve ]

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

(#1104) bambano válasza CPT.Pirk (#1103) üzenetére


bambano
titán
LOGOUT blog

az NR<43 sorba rakj egy printf("#"); utasígást, az END blokk elejére meg egy printf("\n");-t

a zárójeleket is ki lehetne találni úgy, hogy csinálsz az elejére begin blokkot, ott kiiratod, de a pontos vezérlőkarakterekre nem emlékszem fejből (ami csak carriage return-t csinál, line feedet nem), valahogy így:

BEGIN { printf ("[ ]\r["); }

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1105) CPT.Pirk válasza bambano (#1104) üzenetére


CPT.Pirk
Jómunkásember

Most mérges vagyok, mert megint egy hót egyszerű dolgot kérdeztem meg, ami rá kellett volna jönnöm!

Am. a végére már nem tettem ki a ] jelet, mert akkor a bash csinál egy cleart, és lefut a gnuplot, valamint a cowsay közli, hogy a mérés befejezve. Le is videóztam az egészet: [link]

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

(#1106) lapa


lapa
veterán

aix alá kéne nekem valami "iostat szépenoszloponként-fájlbarendszeresenmentő" izéke. van valakinek ilyesmire ötlete?

(#1107) lapa válasza lapa (#1106) üzenetére


lapa
veterán

tudok aixon crontabba olyasmit közvetlenül, hogy

sar > /tmp/$év$hónap$nap.log

? vagy ezt akkor scripteljem inkább?

(#1108) bambano válasza lapa (#1107) üzenetére


bambano
titán
LOGOUT blog

aix-et nem láttam még, de ahol sar-t láttam, ott volt sadc is.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1109) lapa válasza bambano (#1108) üzenetére


lapa
veterán

not found. de mindegy valamit összehekkelek. majd lehet hogy jövök még pucoltatni a kimenetet.

(#1110) bambano válasza lapa (#1109) üzenetére


bambano
titán
LOGOUT blog

a sar-hoz szokott tartozni sar data collector daemon néven.
[link]
[link]
[link]
[link]

de te is beírhatod guglinak, hogy sar data collector :)

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1111) lapa


lapa
veterán

top-ot hogyan tudok kiírni fileba? ez aixon topas, de elég sok a krikszkraksz karakter benne, ha csak fájlba irányítom. de ugyanez van topnál is. pedig mostmár eldöntöttem, hogy csak ezt a topas kimenetet menteném-dolgoznám fel, nagyon kis alapos.

(#1112) lapa válasza bambano (#1110) üzenetére


lapa
veterán

aha sa-ra mint kiderült vannak crontab templatek gyárilag. majd kiderül mit adnak ki, de ma már nem látok.

(#1113) lapa válasza lapa (#1111) üzenetére


lapa
veterán

na továbbra is csak a szenvedés megy. most elhoztam kézi ssh-val a topas kimenetét linuxra. tudom, hogy nem scriptelés, de ha már itt kezdtem el:

szóval ssh aix --> topas

ez kirakja nekem gnome-terminalban a topast. erről a kimenetről szeretnék egy 1:1 mentést minden változáskor. eddig gugliztam meg állítgattam de nem sikerült. pedig nagyon kéne még a hétvége előtt.

(#1114) Jim-Y


Jim-Y
veterán

Sziasztok, olyan commandot kéne írnom, ami egy fileból, ami apache-szerű logfile-t tartalmaz, meg kéne számolnom az egyik, pontosan a 3. property-k különbözőségeit.

Magyarul:D : van egy file, amiben apache logfile van, egy sor egy kérés. Nekem soronként a 3. mező-t kéne vizsgálnom, a mezők szóközzel vannak elválasztva. Meg kéne számolnom, hogy egy filbean, ezen 3. mező hány különböző értéket tartalmaz. Valami ötlet? üdv

(#1115) Jester01 válasza Jim-Y (#1114) üzenetére


Jester01
veterán

sort -k 3 -u in.txt | wc -l

Jester

(#1116) Jim-Y válasza Jester01 (#1115) üzenetére


Jim-Y
veterán

köszi a gyors választ, ez most azt csinálta, hogy egy 1000 soros inputnál kiírta hogy 999 ..

tehát az hiányzik még, hogy a különböző értékek számát írja ki:S De amugy 1000 :R

Áá, nem tudok fogalmazni, szerintem csak én fogalmaztam meg rosszul a kérdést, magyarul
input file:

mező1 mező2 mező3 ... mezőN
mező1 mező2 mező3 ... mezőN
...
mező1 mező2 mező3 ... mezőN

egy ilyenben kéne megszámolnom, hogy hány különböző mező3 érték van.

[ Szerkesztve ]

(#1117) Jester01 válasza Jim-Y (#1116) üzenetére


Jester01
veterán

Hümm, buta sort, nem veszi figyelmbe, hogy csak a 3. mezőt kérjük. Akkor marad a kicsit hosszabb verzió:
cut -f3 -d " " in.txt | sort -u | wc -l

Jester

(#1118) Jim-Y válasza Jester01 (#1117) üzenetére


Jim-Y
veterán

21 , jól működik szerintem :R

[ Szerkesztve ]

(#1119) Jim-Y


Jim-Y
veterán

Sziasztok, lenne megint egy kérdésem, most azt kéne megcsinálnom, hogy van ugyanaz a fájlom mint tegnap, az apachelog, és az ötödik fieldet össze kéne mergelnem a harmadik fielddel, és az ötödiket törölni

Tehát, input:

mezo1 mezo2 mezo3 mezo4 mezo5 ... mezo13
mezo1 mezo2 mezo3 mezo4 mezo5 ... mezo13
...
mezo1 mezo2 mezo3 mezo4 mezo5 ... mezo13

Output:

mezo1 mezo2 mezo3+"_"+mezo5 mezo4 mezo6 ... mezo13
mezo1 mezo2 mezo3+"_"+mezo5 mezo4 mezo6 ... mezo13
...
mezo1 mezo2 mezo3+"_"+mezo5 mezo4 mezo6 ... mezo13

Próbálkozni persze próbálkoztam, de rossz eredményt kaptam sajnos, íme:

#!/bin/sh

awk '{print $1" "$2" "($3+"_"+$5)" "$4" "$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13}' head.txt > res.txt

De sajnos ez hülyeséget írt ki:/ Ötlet?

(#1120) bambano válasza Jim-Y (#1119) üzenetére


bambano
titán
LOGOUT blog

lehet a mezőkön belül szóköz?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1121) Jim-Y válasza bambano (#1120) üzenetére


Jim-Y
veterán

Lehet, de csak úgy, hogy a mező ""-kkel van körülvéve,

mezo1 mezo2 "mezo szokozokkel lehet" mezo4 ... stb

(#1122) ngabor2


ngabor2
nagyúr

van kb. 50GB-nyi fénykép, 7 év termése. ezek egy könyvtárrendszerben vannak szépen rendezve. a felbontásuk általában elég nagy, 2-16 Mpixeles képek, vegyesen. álló és fekvő tájolás, szintén vegyesen.

ezeket kellene 1024x768-ra, vagy fekvő esetben 768x1024-re konvertálni. van pár kivágott kép is, aminek nem 4:3 az aránya, az így járt, ha bonyolult értelmesre átméretezni. itt adtam fel a küzdelmet...

sima rekurzív átméretezésre találtam megoldást, de a mennyiség miatt vagy xargs kellene hozzá, amihez nem konyítok, vagy először egy listába kiírni a fileneveket útvonallal. ez utóbbi, bár fapadosabb, nekem szimpatikusabb lett volna.

(#1123) bambano válasza ngabor2 (#1122) üzenetére


bambano
titán
LOGOUT blog

find . -name '*.jpg' -exec konvertalo {} \;

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1124) Jester01 válasza ngabor2 (#1122) üzenetére


Jester01
veterán

Imagemagick tudja, hogy aránytartóan átmeretez úgy, hogy 1024x1024-be beleférjen. Kb. annyi az egész, hogy:

find . -type f | while read file; do mkdir -p "../out/${file%/*}" && convert -verbose "$file" -resize '1024>x1024>' "../out/$file"; done

Abba a részfába írni amit a find éppen feldolgoz nem éppen életbiztosítás, ezért én itt inkább egy feljebb lévő out directoryba írok.
A file listára szétszedés innen már triviális (akkor persze már lehet ugyanoda pakolni a kimenetet).

Jester

(#1125) bambano válasza Jester01 (#1124) üzenetére


bambano
titán
LOGOUT blog

-type f? nem lenne jobb a kiterjesztésére hivatkozni? mi van, ha van ott valami nem kép?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1126) Jester01 válasza bambano (#1125) üzenetére


Jester01
veterán

Tegyük fel, hogy nincs. Ha mégis, majd a convert kihagyja. Cserébe viszont nem csak a jpg-t hanem a jpeg-et meg a png-t meg az akármit is feldolgozza ;)

Ja és ha már itt tartunk akkor inkább -iname hogy legalább a kisnagybetűvel ne legyen gond.

[ Szerkesztve ]

Jester

(#1127) bambano válasza Jester01 (#1126) üzenetére


bambano
titán
LOGOUT blog

convert -resize '1024>x1024>' xorg.9500gt.saved.conf >/tmp/xorg.conf2
ls -ltra /tmp/xorg.conf2
-rw-r--r-- 1 bambano bambano 0 aug 27 23.13 /tmp/xorg.conf2

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1128) Jester01 válasza bambano (#1127) üzenetére


Jester01
veterán

Van ám benne egy fölösleges átirányítás ami az enyémben nincs.

convert: no decode delegate for this image format `xorg.9500gt.saved.conf' @ error/constitute.c/ReadImage/533.

Viszont .txt-vel sokkal vadabb dolgot csinál a convert :W

[ Szerkesztve ]

Jester

(#1129) bambano válasza Jester01 (#1128) üzenetére


bambano
titán
LOGOUT blog

jogos.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1130) ngabor2 válasza bambano (#1125) üzenetére


ngabor2
nagyúr

a képek között akad pár videó, amit értelemszerűen nem kell/lehet átméretezni, viszont nem ártana átmásolni a célmappába. tehát akkor a feladat finomodott: ami kép, átméretezni, ami nem kép, átmásolni.

a képek mind jpegek, igaz, van kis és nagybetűs is. kiterjesztés szerint *.[jJ][pP][gG] (asszem jpeg kiterjesztésű nincs, hisz fényképek, a gép meg 3 betűt ad neki.)

[ Szerkesztve ]

(#1131) sonar


sonar
addikt

Hi,

Kicsit belegabalyodtam a Bash-be.
Hogyan tudok * -ot kiirni egy file-ba?
Már mindenféle képpen próbáltam, de eddig nem sikerült.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1132) Jester01 válasza sonar (#1131) üzenetére


Jester01
veterán

echo -n \* > file

Jester

(#1133) sonar válasza Jester01 (#1132) üzenetére


sonar
addikt

Thx,
ott rontottam el, hogy "-be raktam a stringet

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1134) bambano válasza sonar (#1133) üzenetére


bambano
titán
LOGOUT blog

az pont nem jó, '*' a jó.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1135) sonar válasza bambano (#1134) üzenetére


sonar
addikt

Pedig próbáltam azt is. Vmit nagyon benézhettem mert most müxik. (kinlódásomban csináltam egy text filet és cat ot irányítottam át)

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1136) bambano


bambano
titán
LOGOUT blog

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.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1137) cAby


cAby
tag

Sziasztok!
Elakadtam egy dolognál és szeretnék segítséget kérni.
Azt szeretném megcsinálni, hogy egy adott könyvtárban lévő összes txt fájl egy sorában szereplő számot össze szeretném adni.
Tehát:

valami.txt tartalma:
Osszes tabla szama = 122

valami2.txt tartalma:
Osszes tabla szama = 10

Es akkor ezt a 122-t és 10-et kéne összeadni.

Ilyenre gondoltam, de nem tudom kivitelezni:

sum=0
for i in <txt fájlok elérési útjai>
do
let sum=sum+`grep "Osszes tabla szama" $i | awk '{ print $5 }'`
done

Az is megvan, hogy az összes txt fájlt így keresem ki:
find /EbbenA/Mappaban/ -name *.txt

Csak már ott hibázik, hogy a find parancs egymás alá adja vissza az elérési utakat, és úgy a for ciklusnál nem lehet megadni listának, ha jól gondolom.

Tehát ezzel a paranccsal remekül kivágja a fájlból az értéket:
grep "Osszes tabla szama" valami.txt | awk '{ print $5 }'
csak egyszerűen nem jövök rá, hogyan kellene ezt ciklusban megcsinálni és összeadogatni az értékeket.

Megköszönném, ha valaki tudna ötleted adni, hogyan is kellene nekiállnom. :)

köszi,
Csabi

[ Szerkesztve ]

(#1138) cAby válasza cAby (#1137) üzenetére


cAby
tag

(Lecsúsztam a szerkesztésről.)

Azonban valamivel javítottam a dolgon:

sum_records=0
for i in `grep "Osszes tabla szama" /mappa/valami.txt | awk '{ print $5 }'` `grep "Osszes tabla szama" /mappa/valami2.txt | awk '{ print $5 }'`
do
let sum_records=sum_records+$i
done

echo $sum_records

Így remekül összeadj a dolgokat.
Tehát már "csak" annyi kellene, hogy a find eredményét átalakítsam a for ciklus feltételénél található alakba.

Ha valakinek van ötlete, akkor kérem segítsen. :) Köszönöm

(#1139) Jester01 válasza cAby (#1138) üzenetére


Jester01
veterán

Ez tiszta shell megoldás:

#! /bin/bash
shopt -s extglob
sum=0
for i in *.txt
do
exec 3<"$i"
while read -u 3 line
do
num=${line##Osszes tabla szama*( )=*( )}
if [ "x$num" != "x" ]
then
sum=$((sum + num))
fi
done
exec 3<&-
done
echo $sum

[ Szerkesztve ]

Jester

(#1140) bambano válasza cAby (#1137) üzenetére


bambano
titán
LOGOUT blog

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
...
done

vagy lehet while ciklussal:
find /EbbenA/Mappaban/ -name *.txt | while read filenev; do

grep ... $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.

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1141) Jester01 válasza bambano (#1140) üzenetére


Jester01
veterán

ha már beforkoltál egy awk-ot, akkor használhatod összeadásra is

Sőt, akkor már mintaillesztésre is a grep helyett.

A csillagháborún jót nevettem :DDD

Jester

(#1142) Jester01


Jester01
veterán

Ha feltételezzük, hogy nincs túl sok fájl akkor ennyivel is meg lehet úszni az egészet:

awk '/Osszes tabla szama/ { sum = sum + $5 } END {print sum}' *.txt

Jester

(#1143) cAby


cAby
tag

Koszonom szepen Nektek a gyors segitseget! :)

Ha hazaertem, akkor megprobalom megerteni a leirtakat es osszehozni a script-et. :)

(#1144) cAby válasza Jester01 (#1142) üzenetére


cAby
tag

Szia!

Végülis addig-addig csináltam, amíg összejött for ciklusos megoldással. :)
Az első megoládsra amit írtál, még további időt rá kell fordítani, hogy megértsem. Gondolom ahhoz már nagy tudás kell. :)

Ez az awk-os is működik, viszont, ha mappa elérési utat is akarok írni, akkor nem megy, ill. változónak sem tudom valamiért átadni az értéket.
Ez kiidegel és több ötletem nincs erre.

Próbáltam így pl., hogy:
parancs=`awk '/Osszes tabla szama/ { sum = sum + $5 } END { print sum }' /home/user/adatok/*.txt`

Gondolom itt a `,'," jelekkel kellene játszani, de nem jövök rá sehogy sem a helyes megoldásra.

Ez azért is kellene, mert kétféle kiterjesztésnél kellene ezt eljátszani, tehát végig kellene nézni *.txt-ket és *.txt-20121014 (tehát különböző dátum van odaírva a txt-k mögé) kiterjesztésű fájlokat.
Úgy gondoltam, hogy külön, külön változóba lementem, majd akkor ki lehet külön is íratni, ill. egyben is.

Ebben még tudnál segíteni kérlek, hogyan is kellene?
Ill. írtad, hogy akkor jó, ha nics sok fájl. Ez mennyi fájlt takar?

Köszönöm előre is!

(#1145) bambano válasza cAby (#1144) üzenetére


bambano
titán
LOGOUT blog

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.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1146) cAby válasza bambano (#1145) üzenetére


cAby
tag

Ohh, lényegében minden kérdésemre megkaptam így a választ, hogy a $( ) formátumot használtam.
Azonban így előjött egy nem várt dolog.

Akkor ez a parancs nekem bőven jó lesz, mert kevesebb, mint 200 fájlról van szó.

Parancs:
summa=$(awk '/Osszes tabla szama/ { sum = sum + $4 } END { print sum }' /home/user/adatok/*.txt

Probléma:
Így kizárólag a /home/user/adatok mappában lévő txt fájlokat nézi, ha az 'adatok' mappában létrehozok egy 'tovabbiadatok' almappát és abban is elhelyezek txt fájlokat, akkor azokat már nem vizsgálja.
Ezt nem lehet beparaméterezni valahogyan?

Köszönöm szépen a gyors segítséget!

(#1147) Jester01 válasza cAby (#1146) üzenetére


Jester01
veterán

shopt -s globstar
summa=$(awk '/Osszes tabla szama/ { sum = sum + $4 } END { print sum }' /home/user/adatok/**/*.txt

Jester

(#1148) bambano válasza cAby (#1146) üzenetére


bambano
titán
LOGOUT blog

summa=$(awk '.....' $(find konyvtarnev -name '*txt'))
vagy:
summa=$( find konyvtar -name '*txt'| xargs cat | awk )

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1149) cAby


cAby
tag

@Jester01, @bambano:
Köszönöm szépen mindkettőtöknek. Mindkét megoldás tökéletesen működik, épp úgy ahogy szeretném. :)

(#1150) rt06


rt06
veterán

vegulis ez lett ebbol

aki megtenne, hogy raero idejeben vet ra egy pillantast es velemenyezi, az lekotelezne

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.