#bash
#bash
Вопрос:
Каждый 10 поступает из другого файла, и каждый из этих файлов поступает из другого каталога. Как бы я добавил их вместе и получил результат Popeye 30?
Это то, что у меня есть до сих пор, чтобы получить три 10 в столбце:
cat "$x" | grep "$candidate" | grep -oe '([0-9.]*)'
Ответ №1:
Просто нужно передать awk '{s =$1} END {print s}'
в конце вашего результата вот так:
echo "Enter candidate:
Popeye
10
10
10" | grep "$candidate" | grep -oe '([0-9.]*)' | awk '{s =$1} END {print s}'
Если вы собираетесь добавлять что-либо сверх 2147483647 (2^31)
этого, printf
было бы предпочтительнее print
, потому что awk использует 32-разрядное целочисленное представление со знаком, и вы можете столкнуться со странным поведением в некоторых версиях awk.
echo "Enter candidate:
Popeye
10
10
10" | grep "$candidate" | grep -oe '([0-9.]*)' | awk '{s =$1} END {printf "%.0fn", s}'
Ответ №2:
вы можете использовать awk, чтобы получить сумму последних трех строк:
echo "$candidate $(cat "$x" | grep "$candidate" | grep -oe '([0-9.]*)' | tail -3 | awk '{i =$1} END{print i}')"