until [ "$SIG" != "2" ]; do
command param1 param2
SIG=$?
done
Это будет запускать команду каждый раз, пока она не вернет число, отличное от 2.
Если вы хотите, чтобы строки ввода были перенумерованы последовательно, вы можете использовать номер записи awk , NR
, например.
awk '{printf "%s%4s%4d\n", $1, $2, NR}' input
Это может быть вариант сawk
:
$ awk '$3 = $3+i++' file
K X 1
K X 2
K X 3
K X 4
K X 5
K X 6
K X 7
K X 8
K X 9
K X 10
Мое решение Bash (не проверено, и оно предполагает, что K и X не содержат пробелов):
i=1
while read a b c
do
echo $a $b $i
i=$((i+1))
done < inputfile
Правильное форматирование вывода оставлено читателю в качестве упражнения.
$ awk '$3=NR' file
K X 1
K X 2
K X 3
K X 4
K X 5
K X 6
K X 7
K X 8
K X 9
K X 10
Вперёд!:-)