szöveg keresés színesen

Fórumok

Milyen trükkel lehetne megoldani a következő dolgot?
Van egy eldugott mappában pár txt fájl. Szeretnék rákeresni egy szóra vagy szövegrészletre ezekben a fájlokban.
Ezt megtudom oldani a grep -i "text" /path/*.txt paranccsal.
Viszont ekkor kiírja a teljes útvonalat ami zavaró.
Ha a grep -ih akkor nem ír ki semmilyen útvonalat, így nem tudom hogy az adott szövegrészletet melyik fájlban találta.
A find-del sem jutottam előrébb. Sőt.

A kívánatos az lenne ha megjelenítené a fájlt IS és a megtalált szöveget.
példa:

/path/path1/path2/path3/minta1.txt
/path/path1/path2/path3/minta2.txt 
/path/path1/path2/path3/minta3.txt 
/path/path1/path2/path3/minta4.txt 

Keresek szöveget: "ákombákom"
Ez a szöveg két fájlban is megtalálható.

grep -i "ákombákom" /path/path1/path2/path3/*.txt
/path/path1/path2/path3/minta2.txt: ákombákom a szélben
/path/path1/path2/path3/minta3.txt: ákombákom a viharban

Így szeretném megkapni az eredményt:
minta2.txt: ákombákom a szélben
minta3.txt: ákombákom a viharban

Csak a greppel mintha ezt nem tudnám elérni. Persze a "-c" kapcsolóval meg csak azt kapom ahol a kérdéses szöveg található, és hogy hányszor szerepel.
grep -c "ákombákom" /path/path1/path2/path3/*.txt
/path/path1/path2/path3/minta2.txt:1
/path/path1/path2/path3/minta3.txt:1

awk-kal meg lehet spékelni, vagy van jobb megoldás is?
grep -i "ákombákom" /path/path1/path2/path3/*.txt | awk -F'/' '{printf $5}'
Bár ebben az esetben elveszti a színeket. 

awk nélküli keresés esetén az én esetemben az útvonal lila, a keresett szöveg piros színt kap.
Ezt tipikusan akkor sikerül elérnem ha belépek a kérdéses mappába és ott adom ki csak a grep parancsot.
cd /path/path1/path2/path3/
grep -i "ákombákom" *.txt

Hozzászólások

Szerkesztve: 2025. 06. 29., v – 21:25

cd /path/path1/path2/path3/

grep -i "ákombákom" *.txt

(tobbet esszel mint awk-val:))

>  Ezt tipikusan akkor sikerül elérnem ha belépek a kérdéses mappába és ott adom ki csak a grep parancsot.

es akkor ez miert nem jo?

Ezt esetleg meg lehetne fejelni azzal, hogy ezt a 2 parancsot ( ) közé teszed, ekkor minden  egy új alshellben fut le, de mikor befejeződik, akkor újfent az eredeti környezetben találod magad (azaz nem kell pl. visszalépned "cd -" segítségével.)

Szerkesztve: 2025. 06. 30., h – 08:43

Bár ebben az esetben elveszti a színeket. 

grep --color=always

Vagy imigy, egyben az egesz. 

grep --color=always -i "text" /path/*.txt | sed -e 's|^/.*/||g'

Ez sem teljesen tokeletes, mert a root-ban levo fileok eseten nem vagja ki a /-t, de... de talan jo lesz :)