Печать шаблона в Unix с использованием awk - PullRequest
0 голосов
/ 28 сентября 2018

необходимо распечатать файл журнала в соответствии с данными поля, присутствующими в файле, используя awk.Пример файла журнала -

Joe,4
Tony,2
Peter,5

Требуемый вывод (Первое поле с c <0> --- c -

Joe,c0,c1,c2,c3
Tony,c0,c1
Peter,c0,c1,c2,c3,c4

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018
$ awk 'BEGIN{FS=OFS=","}{printf $1; for(i=0; i<$2; i++)printf("%sc%d",OFS, i ); print ""}' file
Joe,c0,c1,c2,c3
Tony,c0,c1
Peter,c0,c1,c2,c3,c4

Пояснение

awk 'BEGIN{
      FS=OFS=","                       # set i/p and o/p field separator
     }
     {
      printf $1;                       # print first field
      for(i=0; i<$2; i++)              # loop from 0 to value in second field
            printf("%sc%d",OFS, i );   # printf format string
      print ""                         # finally print newline char
     }
    ' file
0 голосов
/ 28 сентября 2018

еще awk, возможно, самое короткое из возможных ...

$ awk -F, '{f="";while($2--)f=FS"c"$2f;print $1f}' file

Joe,c0,c1,c2,c3
Tony,c0,c1
Peter,c0,c1,c2,c3,c4
0 голосов
/ 28 сентября 2018

Не могли бы вы попробовать следующее.

awk 'BEGIN{FS=OFS=","} {printf $1 OFS;k="";for(i=1;i<=$NF;i++){printf("%s%s","c"k++,i==$NF?ORS:OFS)}}'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...