Linux alatt szövegfájl bizonyos sorainak megszámolása, shell-script vagy parancs?
Linux alatt milyen parancsok segítségével számolhatóak meg pl. egy szövegfájl bizonyos sorai?
A következő a helyzet, van egy szövegfájl, amelynek van egy sora, és a rá következő sor az érdekes, amelynek több értéke is lehet.
Példa:
alma
piros alma
alma
zöld alma
alma
birsalma
alma
nyári alma
alma
Jonatán alma
Stb.
Tehát megtalálja hogy "alma" és az ez utáni sorban előforduló stringeket megszámlálja és a végén kiírja: melyik stringből mennyi fordult elő.
Akál shell script vagy bármi érdekelne. "sed", "awk" meg grep össze-pipe-olása is.
Programot tudnék rá írni, de az érdekelne: van -e beépített megoldása erre a Linuxnak.
awk-val megcsinálhatod, hogy ha matchel, akkor "skippelje" a sort és a következöt printelje ki: awk '/^alma$/{getline; print}'
Van egy uniq nevü parancs, aminek ha adsz egy -c kapcsolót, akkor megszámolja, hogy miböl mennyi van. Ahhoz, hogy az uniq müködjöj, sortolni is kell, szerencsére erre ott a sort nevü parancs:
~/tmp$ cat alma.txt
alma
piros alma
alma
zöld alma
alma
birsalma
alma
nyári alma
alma
Jonatán alma
~/tmp$ cat alma.txt | awk '/^alma$/{getline; print}' | sort | uniq -c
1 birsalma
1 Jonatán alma
1 nyári alma
1 piros alma
1 zöld alma
Kb ennyi:
grep -A 1 "^alma$" fájl | grep -v "^alma$" | uniq -c
A fájl helyére a fájlnevet írd
bocs, a sort kimaradt:
grep -A 1 "^alma$" fájl | grep -v "^alma$" | sort | uniq -c
#1: mert ez nem egy tipikusan programozási feladat
#7: "inkább írok 10 perc alatt egy Perl skriptet, mint hogy fél napig agyaljak azon, hogy hogyan lehet 1-2 sorban, parancssorból megírni" - a #12-es választ kb 10 mp alatt írtam.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!