2013-07-17 3 views
0

Как я могу добавить столбец после первого, который вычисляет значения из выражения. это выражение имеет вид: (vn + v0) * vl, где v0 и vl - первый и последний элемент 3-го столбца соответственно, а vn - n-й элемент этого столбца. например, мы имеем текстовую таблицу:Добавление столбца, который выводится из другого столбца, с помощью выражения с awk

1 2 3 4 
10 20 30 40 
100 200 300 400 

он должен быть преобразован в

1 1800 3 4 
10 9900 30 40 
100 180000 300 400 

благодаря

+1

Не могли бы вы объяснить, как вы попадаете в '180000' – iruvar

ответ

1

как правило, вы определили в вашем вопросе, число в последней строке не должно быть 180000. она должна быть (300+3)*300=90900

это AWK линия может работать для вас:

awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]}7' file file 

выход:

kent$ awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]}7' file file 
1 1800 3 4 
10 9900 30 40 
100 90900 300 400 

EDIT

OP хочет добавить новый столбец после первого:

kent$ awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]" "$2}7' file file 
1 1800 2 3 4 
10 9900 20 30 40 
100 90900 200 300 400 
+0

Я использовал вышеприведенные команды, но вместо того, чтобы добавлять, он заменяет второй столбец. Как его решить? – Atoof

+1

@ Атрибут awk дает тот же результат, что и ожидаемый результат в вашем вопросе. Pls дважды проверьте его. Если вы хотите «добавить», вы должны сообщить нам, где добавить. Сначала отредактируйте свой вопрос! – Kent

+0

@Atoof см. EDIT, добавьте новый столбец после 1-го. – Kent

Смежные вопросы