Основываясь на приведенном вами примере, я бы изменил его на следующее:
while read line
do
a=$(echo ${line} | awk '{print $4}')
printf "N%.0s" $(seq $a)
echo
done < table.txt
Мне не ясно, как вы смогли получить 3 N из вашего исходного решения (я не смог воспроизвести), но, возможно, у нас другая конфигурация.Решение, которое я разместил выше, основано на BASH.Внутри цикла while первая строка кода
a=$(echo ${line} | awk '{print $4}')
выводит строку, а затем направляет ее в оператор awk, который просматривает только четвертый столбец и сохраняет его в переменной с именем «a».Обозначение $(...)
просто означает оценку оператора в скобках как команды BASH (в этом случае echo
передается в команду awk
).Во второй строке,
printf "N%.0s" $(seq $a)
, я печатаю $ N с помощью команды printf
.Еще раз, $(...)
просто запускает команду BASH, которая в данном случае является командой seq
для печати символов $ a.С помощью этого скрипта я смог получить следующий результат для вашего примера файла table.txt:
NNNN
NNN
NNNNNNN