2012-03-08 3 views
0

У меня просто самое страшное время с этим. Вот моя заявка nakk:Разделение и добавление с помощью ksh и awk/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

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

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 в качестве переменного, потому что вы не может вставлять одну кавычку в одну строку с кавычками.

+0

Это похоже на работу. Что делать, если я хотел бы обернуть каждый элемент данных одной цитатой? – Carlos

+1

@ mastashake57, ответ обновлен. –