Разделение и добавление с помощью ksh и awk / nawk - PullRequest
0 голосов
/ 09 марта 2012

У меня просто самое страшное время с этим. Вот мое утверждение nawk:

nawk -F"\t" '{print substr($1,0,4)","substr($1,5,4)","substr($1,9,4)","$2","$3","$4","$5","$6}' filename

В двух словах, это файл с разделителями табуляции. Я хочу разделить первый столбец (12 символов) на 3 столбца, и я делаю это с помощью функции подстроки. Затем я хотел бы напечатать остальные данные без первого столбца. Это дополнительная часть, с которой у меня проблема.

В текущей итерации строки, не имеющие 6 столбцов, будут иметь запятые, а строки, содержащие более 6 столбцов, не будут напечатаны.

Есть мысли?

1 Ответ

1 голос
/ 09 марта 2012

Не проверено, но попробуйте это:

nawk -F"\t" -v OFS=, '
    {$1 = substr($1,0,4) OFS substr($1,5,4) OFS substr($1,9,4)}
    {print}
' filename

Обновление для комментария - я предполагаю, что вы хотите, чтобы каждое поле в кавычках:

nawk -F"\t" -v OFS=, -v q="'" '
  {
    $1 = q substr($1,0,4) q OFS q substr($1,5,4) q OFS q substr($1,9,4) q
    for (i=2; i<=NF; i++) 
      $i = q $i q
    print
  }
' filename

Я передаю одинарную кавычку в nawk как переменную, потому что вы не можете встроить одиночную кавычку в одну строку в кавычках.

...