Bash script - egy tagú stringek felismerése [megoldva]

Van egy ilyen formátumú szerzői listám:

Abdrafikova, A
Akhmadullina, R M
van der Meulen, R T
Van der Bruggen, C O
Spilt, J L és mtsai

Ebből szeretnék olyat, hogy az egy betűs tagok után legyen egy pont, azaz:

Abdrafikova, A.
Akhmadullina, R. M.
van der Meulen, R. T.
Van der Bruggen, C. O.
Spilt, J. L. és mtsai

Így próbáltam meghatározni, hogy csak az egy tagúak után legyen pont:
cat myfile | sed 's/\(\ [A-Za-záéíóöőúüű]\{1\}\)/\1./g'

De elcseszi a hollandokat - joggal:
van d.er M.eulen, R. T.
Van d.er B.ruggen, C. O.

Hogyan jelölhetem ki, hogy valóban csak az egyedül álló betűk után tegyen pontot?

Hozzászólások

sed "s/\b\([A-Za-z]\)\b/\1./g" /tmp/x.txt
Abdrafikova, A.
Akhmadullina, R. M.
van der Meulen, R. T.
Van der Bruggen, C. O.
Spilt, J. L. és mtsai

A gsub() mindenhol létezik (gawk-ban is), csak icipicit kevesebbet (és máshogy) tud, mint a gensub(), amiről a gawk manja is csak első látásra nem állítja, hogy GNU találmány, amúgy meg ha tényleg kinyitom a szemem, láthatom, hogy ott van egy hosszú (és egyre hosszabb, ahogy szaborodnak a gawk függvényei) sor közepén a GNU EXTENSIONS szekcióban.

A nawk meg naná, hogy szintén definiálja: ha az /etc/alternatives egyerűen a gawkra linkeli a nawkot. Amúgy meg nem, vagyis mégis GNU-only.

Duplán benéztem.

Sajnos a dolog ott bukott el, hogy a \< \> a vi-ban épp létező szó-elejet/szó-vége, de nem szabványos RE tag, és mint ilyen awk-ban sem működik :-( Ha lenne valami szabványos ERE a szó-eleje/vége illeszkedésre, akkor valóban lehetne így:


awk '{gsub( /\<[a-zA-Z]\>/, "&." ); print}' <<< 'alma a fa a latt'

de ennek hiányában az egyébként szellemes ötlet bukik.

=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?

Az nem baj, ha awk?

#!/usr/bin/awk -f

{
    for (i=1; i<=NF; i++) {
        if (length($i)==1) {
            printf("%s.", $i);
        } else {
            printf("%s", $i);
        }
        if (i==NF) {
            printf("\n");
        } else {
            printf(" ");
        }
    }
}

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem tudtam, hogy a record buffert szabad büntetlenül módosítani. Úgy értem, bennem felmerült, hogy ha hozzáadok az egyik mezőhöz egy karaktert, akkor esetleg a következő mezőt rongálja szét, de ezek szerint okosan csinálja az awk.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE