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 aread
beé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
,ALMA
stb. 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.