Bash создает пользовательскую строку

как мог в ударе шаблон как

ROW1   n1    n2    n3   n4 

до 300 быть сделанным с некоторой командой в bash или также просто perl... разделитель должен был бы быть \t

как выше

3
задан 25 June 2015 в 22:22

4 ответа

Можно использовать расширение фигурной скобки и printf:

printf "%s\t" ROW1 n{1..300}

первая строка определяет, что формат вывода к printf, и %s заменяется соответствующим аргументом. С тех пор существует [только 115], printf снова используют спецификатор формата, пока все аргументы не будут исчерпаны. Это оставит запаздывающую вкладку.

{1..300} синтаксис удара, который расширяется в числа от 1 до 300, разделенный пробелами. Если строка будет добавлена, то прежде или после фигурных скобок, расширенная форма будет также иметь ту строку присоединенной.

Для предотвращения запаздывающей вкладки необходимо будет распечатать что-то отдельно, или первое слово или последнее:

printf "ROW1"; printf "\tn%d" {1..300}
printf "%s\t" ROW1 n{1..299}; echo n300
9
ответ дан 1 December 2019 в 13:04

Более простая команда:

echo -n "ROW1" && echo -ne "\t"n{1..300}

Еще более простой благодаря @hildred

echo -ne "ROW1" "\t"n{1..300}
3
ответ дан 1 December 2019 в 13:04

В остроте:

echo -n "ROW1"; for ((i=1; i<=300; i++)); do echo -ne "\t n${i}"; done

Или использование того же подхода с помощью расширения фигурной скобки (благодаря A.B. для предложения):

echo -n "ROW1"; for i in {1..300}; do echo -ne "\t n${i}"; done
0
ответ дан 1 December 2019 в 13:04

Поскольку Вы упомянули perl

perl -e 'printf "ROW1"; printf "\tn%d",$_ foreach (1..300)'
0
ответ дан 1 December 2019 в 13:04

Другие вопросы по тегам:

Похожие вопросы: