POSIX диктует, что " присваивание несуществующему полю (например, $ (NF + 2) = 5) должно увеличить значение NF; создать любые промежуточные поля с неинициализированным значением; вызвать значение $ 0.для пересчета, поля должны быть разделены значением OFS."
Итак ...
awk 'NR==1{x=$3} $1=="C"{$3=x} 1' input.txt
Обратите внимание, что вывод не отформатирован хорошо, но это, вероятно,случай с большинством решений здесь.Вы можете передать вывод через column
, как предложил Равиндер.Или вы можете точно контролировать вещи, печатая свои данные с помощью printf
.
awk 'NR==1{x=$3} $1=="C"{$3=x} {printf "%-2s%-26s%s\n",$1,$2,$3}' input.txt
Если ваши строки могут быть выражены в формате printf
, вы сможете избежать непредсказуемости column -t
и сохранить накладные расходы на трубу.