( khiraly | 2025. 05. 05., h – 16:00 )

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 a read 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 az echo-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.