РЕДАКТИРОВАТЬ: В соответствии с запросом OP добавление кода, который будет принимать любое поле, предоставленное ему в качестве переменной awk
.
awk -v col1="2" -F"[ .]" '$col1 == prev+1{print sum;sum=prev=""} {sum+=$NF;prev=$col1} END{if(prev && sum){print sum}}' Input_file
ИЛИ (форма решения не с одним вкладышем здесь)
awk -v col1="2" -F"[ .]" '
$col1 == prev+1{
print sum;
sum=prev=""
}
{
sum+=$NF;
prev=$col1
}
END{
if(prev && sum){
print sum}
}' Input_file
Если вы передаете переменную bash в переменную awk
, выполните следующие действия.
column=2 ##Shell variable
awk -v col1="$column" -F"[ .]" '$col1 == prev+1{print sum;sum=prev=""} {sum+=$NF;prev=$col1} END{if(prev && sum){print sum}}' Input_file
Не могли бы вы попытаться выполнить следующие действия и сообщить мне, поможет ли это вам (учитывая, что ваш фактический файл Input_file совпадает с приведенным здесь примером).
awk -F"[ .]" '$2 == prev+1{print sum;sum=prev=""} {sum+=$NF;prev=$2} END{if(prev && sum){print sum}}' Input_file
Теперь добавляем не-лайнерную форму решения.
awk -F"[ .]" '
$2 == prev+1{
print sum;
sum=prev=""
}
{
sum+=$NF;
prev=$2
}
END{
if(prev && sum){
print sum}
}' Input_file