Как определить переменную оболочки, равную текущей установленной версии Vim?

Ответ на оригинальный вопрос

С небольшими изменениями в вашем коде:

$ awk 'NR==1{$4="app"} ($1 in arr){$4 = $3 - prev3;} {prev3 = $3; arr[$1]; print}' infile
site year count app
040130013 1997 34
040130013 1998 55 21
040130019 2006 79
040130019 2007 135 56
040130019 2008 151 16
040130019 2009 172 21
040130019 2010 179 7

Ключевое изменение заключается в том, что prev3 = $3; arr[$1]; print выполняется для каждой строки, а не только для тех, для которых ($1 in arr).

Как предложил steeldriver, нам не нужно сохранять местоположения в массиве:

$ awk 'NR==1{$4="app"} $1==prev1{$4=$3-prev3;} {prev3=$3; prev1=$1; print}' infile
site year count app
040130013 1997 34
040130013 1998 55 21
040130019 2006 79
040130019 2007 135 56
040130019 2008 151 16
040130019 2009 172 21
040130019 2010 179 7

Ответ на измененный вопрос

как насчет того, если я хочу скопировать третий столбец в четвертый столбец для первого уникального сайта?

$ awk 'NR==1{$4="app"} {$4=$3;} $1==prev1{$4=$3-prev3;} {prev3=$3; prev1=$1; print}' infile
site year count count
040130013 1997 34 34
040130013 1998 55 21
040130019 2006 79 79
040130019 2007 135 56
040130019 2008 151 16
040130019 2009 172 21
040130019 2010 179 7
3
14.02.2016, 11:55
0 ответов

Теги

Похожие вопросы