Вы можете попробовать прочитать l oop, используя чисто решение оболочки.
constant=4
while read -r line; do
printf '%d\n' $((line + constant))
done < <(awk '{print $1}' file.txt ) > out.txt
Оболочка может обработать первый столбец без awk
, сохранив каждую строку в массиве, который требует использования -a
флаг / опция для read
constant=4
while read -ra line; do
printf '%d\n' $((line + constant))
done < file.txt > out.txt
"$line"
совпадает с ${line[0]}"
, который является первым элементом в массиве.
$
можно опустить внутри арифметического / математического контекста внутри $(( ))
или просто выполнить расширение параметра.
constant=4
while read -r line; do
printf '%d\n' $((${line%%[[:space:]]*} + constant))
done < file.txt > out.txt
РЕДАКТИРОВАТЬ: Как предполагает ogus ismail, встроенная read
может иметь фиктивную переменную, которая может содержать остальные столбцы / поля (так как мы ищем только первое поле / столбец), который является _
.
constant=4
while read -r column1 _ ; do
printf '%d\n' $((column1 + constant))
done < file.txt > out.txt