felix meier: problem mit script (awk)

hi

ich habe ein problem mit meinem script:

cat user | gawk -F[,] '{printf "create:%2.2s%4.4s\n", $3,$2,};'

das script liest aus einer datei user zeilenweise eine kommaseparierte liste ein.
dann werden aus dem dritten wert und dem zweiten wert ein string erstellt. und zwar die ersten zwei buchstaben vom dritten wert und 4 vom  zweiten wert.
beispiel:
einlesen
1, test, person,
ergibt: tepers

wie kann ich das jetzt realisieren, dass das skript nicht die ersten beiden buchstaben von $3 nimmt, sondern den ersten und den letzen buchstaben:
also: ttpers

kann mir jemand einen tipp geben?

gruss
felix

  1. Hallo felix,

    kann mir jemand einen tipp geben?

    folgendes AWK-Script sollte Dich weiterbringen:

    {
      printf "create:%s%s%s\n",
             substr($3,0,1),
             substr($3,-1,1),
             substr($2,0,4)
    }

    Viele Grüße,
    Christian

    1. Hi

      folgendes AWK-Script sollte Dich weiterbringen:

      {
        printf "create:%s%s%s\n",
               substr($3,0,1),
               substr($3,-1,1),
               substr($2,0,4)
      }

      ich habs gerade ausprobiert.
      leider bekomme ich als ausgabe nicht den ersten und den letzen sondern zweimal den ersten buchstaben:

      beispiel:
      1, testperon, muster

      ausgabe:
      ttmust und leider nicht tpmust

      wo liegt der fehler? kann substr nicht negativ angegeben werden?

      1. Hallo felix,

        wo liegt der fehler? kann substr nicht negativ angegeben werden?

        Oh, stimmt, ich bin zu PHP-verwöhnt. Also nochmal:

        {
          printf "create:%s%s%s\n",
                 substr($3,1,1),
                 substr($3,length($3),1),
                 substr($2,1,4);
        }

        Viele Grüße,
        Christian

    2. hi nochmals

      folgendes AWK-Script sollte Dich weiterbringen:
      {
        printf "create:%s%s%s\n",
               substr($3,0,1),
               substr($3,-1,1),
               substr($2,0,4)
      }

      ich habe jetzt n bisschen verändert und es geht:
      ...
      ,substr($3,length($3),1),substr($2,0,4),
      ...

      gruss