форматирование bash printf - избегайте переноса длинных строк - PullRequest
0 голосов
/ 24 июня 2018

входной пример:

line1:word word
line2:word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word
line3:word word word

Когда я форматирую его с помощью printf, строка-одиночка переносится - как этого избежать?

$ cat input_test|while IFS=: read a b;do printf "%-10s %-3s %s\n" "$a" ":" "$b";done
line1      :   word word
line2      :   word word word word word word word word word word word word word word word word word word word word word 
word word word word word word word word word word word word word word word word word word word word word word word word 
word word word word word word word word word
line3      :   word word word

Если второй столбец (разделенный двоеточием)длиннее возможного числа символов в строке в ожидаемом выводе терминала:

line1      :   word word
line2      :   word word word word word word word word word word word word word word word word word 
               word word word word word word word word word word word word word word word word word 
               word word word word word word word word word word word word word word word word word 
               word word word
line3      :   word word word

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Если вы в порядке с awk здесь, то следующее может помочь вам, также не уверены, что ваша вторая строка после разбиения вам всегда нужна там 3 колонки? следующий не сделает этого.

awk -v s1="\t" '{sub(/:/,"      :     ",$1)}NF>10{;for(i=10;i<=NF;i+=10){$i=$i ORS s1 s1}} 1' Input_file

Вывод будет следующим.

line1      :     word word
line2      :     word word word word word word word word word word
                 word word word word word word word word word word
                 word word word word word word word word word word
                 word word word word word word word word word word
                 word word word word word word word word word word
                 word word word word
line3      :     word word word

Вы также можете изменить NF>10 в соответствии с вашими потребностями здесь и по количеству столбцов. Если вы меняете его, измените, пожалуйста, на цифры цикла (где бы они ни были 10) на это число.

0 голосов
/ 24 июня 2018

Вы можете использовать столбец :

cat input_test | column -c100 -s: -o'      :   ' -t -W2

К сожалению, это приведет к дополнительному выводу ':' в выводе:

line1      :   word word
line2      :   word word word word word word word word word word word word word word word word word 
           :   word word word word word word word word word word word word word word word word word 
           :   word word word word word word word word word word word word word word word word word 
           :   word word word
line3      :   word word word

Мы можем удалить их с помощью sed:

cat input_test | column -c100 -s: -o'      :   ' -t -W2 | sed 's/^           :   /               /'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...