Bash cria uma string personalizada

3

como poderia bash um padrão como

ROW1   n1    n2    n3   n4 

até 300 seja feito com algum comando em bash ou também apenas perl ... o delimitador precisaria ser \t

como acima

    
por user3069326 25.06.2015 / 15:48

4 respostas

9

Você pode usar a expansão de chaves e printf :

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

A primeira cadeia especifica o formato da saída para printf e %s é substituído por um argumento correspondente. Como há apenas %s , printf reutilizará o especificador de formato até que todos os argumentos estejam esgotados. Isso deixará uma guia à direita.

{1..300} é a sintaxe bash que se expande em números de 1 a 300, separados por espaços. Se uma string for adicionada antes ou depois das chaves, o formulário expandido também terá essa string anexada.

Para evitar uma guia à direita, você terá que imprimir algo separadamente, a primeira ou a última palavra:

printf "ROW1"; printf "\tn%d" {1..300}
printf "%s\t" ROW1 n{1..299}; echo n300
    
por muru 25.06.2015 / 15:52
3

Comando mais simples:

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

Ainda mais simples graças a @hildred

echo -ne "ROW1" "\t"n{1..300}
    
por Maythux 25.06.2015 / 15:55
0

Em um verso:

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

Ou usando a mesma abordagem usando a expansão de contraventamento (graças a A.B. pela sugestão):

echo -n "ROW1"; for i in {1..300}; do echo -ne "\t n${i}"; done
    
por kos 25.06.2015 / 15:53
0

Porque você mencionou perl

perl -e 'printf "ROW1"; printf "\tn%d",$_ foreach (1..300)'
    
por A.B. 25.06.2015 / 21:12