Você pode usar esse truque printf
com um especificador de string de comprimento zero %.0s
e expansão de chave:
printf '%.0sOW\nHW1\nHW2\n' {1..3000} > newfile
Eu gostaria de ter a seguinte sequência: OW HW1 HW2 sendo repetido em um arquivo de saída 3000 vezes como:
OW
HW1
HW2
.
.
.
OW
HW1
HW2
Eu acredito que posso, usando o bash, definir o OW, HW1 e HW2 como variável independente e, em seguida, fazer um loop do loop de 3000 vezes e imprimir os valores no arquivo de saída.
Você pode usar esse truque printf
com um especificador de string de comprimento zero %.0s
e expansão de chave:
printf '%.0sOW\nHW1\nHW2\n' {1..3000} > newfile
Pode ser feito facilmente com o Perl:
perl -e'print "OW\n\HW1\nHW2\n"x3000'
Se usar for
in
cycle:
for i in $(seq 1 3000) ; do echo -e "OW\nHW1\nHW2"; done
ou use o echo 3x
for i in $(seq 1 3000) ; do echo OW; echo HW1; echo HW2; done
Você poderia simplesmente usar yes
e head
para gerar essa sequência 3000 vezes.
yes $'OW\nHW1\nHW2' | head -9000
Aqui você precisa do 9000 porque tem 3 linhas e deseja essas 3 linhas 3000 vezes.
Se o seu shell oferecer "expansão de contraventamento", tente
echo $'\nOW\nHW1\nHW2\n'{1..3000}$'\n' | grep -Ev "^( |[0-9])*$"
OW
HW1
HW2
OW
HW1
HW2
OW
HW1
HW2
.
.
.
e redirecionar para um arquivo, se estiver satisfeito com o resultado.
você pode usar um loop while como aqui: link
Um exemplo:
COUNTER=0; while [ $COUNTER -lt 3 ]; do echo "$COUNTER" && COUNTER=$((COUNTER+1)); done
Não se esqueça de redefinir o COUNTER toda vez que você quiser executar isso.
Solução Python3
python3 -c 'print("OW\nHW1\nHW2\n"*3000, end="")'
Tags bash