Sziasztok
van egy shell scriptem ami generál két fájlt, a két fájt tartalma :
elsőnek:
uid
243
244
245
246
247
248
250
.
.
.
a másodiknak:
105881
10573
10568
10567
10549
105472
10540
.
.
.
hogy tudnám a legegyszerűbben a tartalmukat összehasonlítani, pár sorban, (több) ciklus nélkül?
Ez valamiért nem a megfelelő eredményre vezet (persze mert soronként dolgozná fel a fájlokat):
/usr/bin/diff $NOCACHEFILE $VISITEDIDFILE | $GREP "<" | $GREP -v "uid"> $NOCACHEDIDFILE
Köszi
- 1759 megtekintés
Hozzászólások
Egyaltalan milyen kimenet kellene? Ha rosszul tevedek, akkor arra volna szukseged, hogy az elso file-ban letarolt uid-ek (user-ek?) milyen file-okat, konyvtarakat stb. latogattak? Vagy csak csupaszon kellene a kimenet "<" nelkul?
Szerk.: Vagy eppen arra volna szukseg, hogy egy adott user mit nezegetett? Soronkent? Valami statisztikat szeretnel kesziteni?
---
Egy jol feltett kerdes mar egy fel valasz...
- A hozzászóláshoz be kell jelentkezni
Igen, egyfajta statisztika lenne, a két fájlom már megvan a fenti formában és azt kell kiszednem ami az egyikben nincs, de a másikban megvan.
Nem userid-k (de a megoldáshoz mindegy, hogy milyen számok), hanem index.php?id=xxx (egyik fájl tartalma, a leglátogatottabb oldal id-k), a másik fájlban pedig az el-cachel-t oldalak id-je, ezen kettőt kellene összehasonlítanom ciklus meg ilyen-olyan rendezés nélkül, bash script-ből.
Tehát apache access.log feldolgozást és összehasonlítást akarok összerakni és megkeresni azon id-ket amik nincsenek ideiglenesen elmentve. Eleje megvan, a bash-ból összehasonlításnál akadtam meg:-(
Az awstats sajnos nem id szerint rendezi (ill. meg sem jeleníti az id-s oldalakat, hanem szétbontja az oldalon lévő képek,frame-k stb.szerint) a leglátogatottabb oldalakat.
A kimenet egy sima szöveg fájlban kell nekem.
- A hozzászóláshoz be kell jelentkezni
Akkor tisztazzuk.
Adott ket file, aminek tartalma gyakorlatilag tetszoleges.
Mindket file tartalmazhatja ugyanazon elemeket.
A problema: Azon elemekre van szukseged, amit az elso file tartalmaz, de a masodik nem.
Jol ertem?
---
Egy jol feltett kerdes mar egy fel valasz...
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy rosszul ertem, de nem sort kell neked?
- A hozzászóláshoz be kell jelentkezni
De, az is van benne, kell az összegyűjtéshez, de a két fájl összehasonlításához már nem, sajnos a diff program soronként ellenőrzi.
Azaz
Első fájl :
1 sorban: 1
2 sorban: 2
3 sorban: 3
4 sorban: 4
és így tovább,a másikban
1 sorban: 4
2 sorban: 5
3 sorban: 6
és így tovább, akkor a diff (mivel soronként dolgozik, minden sorban eltérést talál), nekem az kellene, ha a 4-es szerepel mind a két fájlban akkor csak a különbséget szeretném fájlban megkapni így sorokban: 1 2 3 5 6 és így tovább....
- A hozzászóláshoz be kell jelentkezni
Ezek, amiket ide felírtál, hogyan jöttek ki?
Biztos agyalágyult vagyok, de valahogy nekem nem egészen világos mit is akarsz.
Vegyük az első fájl első sorát: 243 és a második fájl első sorát:105881. Ebből most mit akarsz eredményül kapni? Mivel nincs közös részük ezért lehetne a 243 vagy a 1058 (vagy 105881?). Vagy esetleg a 2431058?
- A hozzászóláshoz be kell jelentkezni
"nekem az kellene, ha a 4-es szerepel mind a két fájlban akkor csak a különbséget szeretném fájlban megkapni így sorokban: 1 2 3 5 6 és így tovább...."
A fenti példára megoldás:
cat file1 file2 | sort -n |uniq -u
- A hozzászóláshoz be kell jelentkezni
Kezdem má érteni!
Tehát az egész fájl tartalma számít, és egy sorban lévő számsor számít egy számnak. Nem kell őket tagokra felbontani!
Eredményül azok a számok kellenek, amik csak az egyik fájlban találhatóak meg.
Így már helyes?
- A hozzászóláshoz be kell jelentkezni
Köszi icserny :-) ez kellett :-)
Nem tudom miért nem gondoltam rá(?!), a uniq-ot (is) használtam, az id-k halmazán a látogatottsági sorrend felállításánál!
Köszi mindenkinek.
- A hozzászóláshoz be kell jelentkezni
Ez rendesen egy rejtveny is lehetne lassan... :D
---
Egy jol feltett kerdes mar egy fel valasz...
- A hozzászóláshoz be kell jelentkezni
for i in `cat 1.txt`; do grep -q ^$i 2.txt || echo $i; done
az 1.txt amit keresel a 2.txt meg a már létező fájlok azt hiszem kell még egy lezáró a grep végére, hogy a 2 és 22 elkülöníthető legyen.
--
Elméletileg nincs különbség elmélet és gyakorlat között. Gyakorlatilag van.
- A hozzászóláshoz be kell jelentkezni