Shell - Как добавить добавочный пробел в каждой строке - PullRequest
0 голосов
/ 18 октября 2018
if [ $(grep -c 'Health Status: RED' $LOG) -gt 0 ]; then
    $(grep 'Server:' $LOG > $TMP )
    while read -r line
    do
        echo "$instance,1,$line"
    done < "$TMP"

    else
    echo "\n$instance,0,Health Status: GREEN\n"
fi

Вывод вышеприведенного кода выглядит следующим образом:

Instance1,1,Server: EMEA

Instance1,1,Server: NAM

Instance1,1,Server: ASIA

Instance1,1,Server: AUSTRALIA

Мне нужно добавить добавочный пробел в $instance переменной на строку, добавить один пробел после $instance, как показано ниже.Обратите внимание, что число строк не является фиксированным.

Instance1 ,1,Server: EMEA  ==> One blank space added after Instance1

Instance1  ,1,Server: NAM ==> two blank spaces added after Instance1

Instance1   ,1,Server: ASIA ==> three blank spaces added after Instance1

Instance1    ,1,Server: AUSTRALIA ==> four blank spaces added after Instance1

любые входные данные будут с благодарностью

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Замените ваш while следующим:

spaces_counter=1
while read -r line
do
    echo "$instance$(printf "%0.s " $(seq 1 $spaces_counter)),1,$line"
    (( spaces_counter += 1 ))
done < "$TMP"

Некоторые пояснения:

  • $(seq 1 $spaces_counter): выводит целые числа от 1 до $spaces_counter
  • $(printf "%0.s " $(seq 1 $spaces_counter)): использует последовательность сверху для печати определенного количества пробелов.
  • символ после "% 0.s" - это место, где вы указываете символ, который хотите повторить.

Это основано на следующем ответе: Печатать символ несколько раз в bash

в сочетании с вашим кодом.

0 голосов
/ 19 октября 2018

Попробуйте использовать printf как показано ниже

for ((i=3;i<10;i++)); do
   printf "%*s\n" $i ",1,"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...