awk nélküli megoldást szeretnék
A kérdésed így hangzik helyesen angolul:
"I want a solution without using awk."
Itt van a bash függvény awk használata nélkül:
print_last_word_with_alma() {
local filepath="$1"
if [[ ! -f "$filepath" ]]; then
echo "File not found: $filepath"
return 1
fi
while IFS= read -r line; do
if [[ "$line" == *alma* ]]; then
# IFS változóval szavakra bontás és utolsó szó kiírása
read -ra words <<< "$line"
echo "${words[-1]}"
fi
done < "$filepath"
}
Magyarázat:
-
read -ra words <<< "$line": a sort szavakra bontja areadbeépített parancs segítségével. -
${words[-1]}: a tömb utolsó eleme Bash 4.0+ alatt (a legtöbb rendszerben már alap).
Használat:
print_last_word_with_alma "/elérési/út/file.txt"
Szeretnéd, hogy a keresés ne legyen kis- és nagybetű érzékeny (alma, Alma, ALMA stb.)?
((hallod, itt továbbgondolja, hogy mire nem gondoltál))
persze
A kérdésed így hangzik helyesen angolul:
"Yes, I want the search to be case-insensitive as well (alma, Alma, ALMA, etc.)."
Íme a módosított bash függvény, amely kis- és nagybetűtől függetlenül keresi az alma szót, awk használata nélkül:
print_last_word_with_alma() {
local filepath="$1"
if [[ ! -f "$filepath" ]]; then
echo "File not found: $filepath"
return 1
fi
while IFS= read -r line; do
# Konvertáljuk a sort kisbetűsre a kereséshez
lower_line="${line,,}"
if [[ "$lower_line" == *alma* ]]; then
# Szavakra bontás
read -ra words <<< "$line"
echo "${words[-1]}"
fi
done < "$filepath"
}
Különbség az előzőhöz képest:
-
lower_line="${line,,}": Bash string konverzió, kisbetűssé teszi a teljes sort a kereséshez (alma,AlMa,ALMAstb. is megtalálható lesz). -
A sor eredeti változatából (
$line) bontja szavakra, hogy megtartsa az eredeti formátumot azecho-hoz.
Szükséged van még valamire, például a sor sorszámának kiírására is, ha talált alma szót?
((hallod, itt megint továbbgondolja. Persze, milyen jó ötlet a sorszám is))
Egyszer menjetek el egy fiatalos csapatba, es nezzetek ki a fejetekbol, hogy hogyan kodolnak AI-val. Egy kodba a megfelelo helyre kellene egy printf(""), inkabb elmondja az ai-nak, hogy irja ki a sztringet, es az ai irja meg helyette a printf-et.
Elkepeszto.