Se i era apenas um número incrementado com cada string, você poderia tentar um laço para e incrementar i a cada iteração .
Por exemplo:
i=1; for j in 'www.google.com' 'www.yahoo.com'; do echo "$((i++)) $j"; done
Eu quero usar duas variáveis em um loop for
como este (Isto é, por exemplo, eu não vou executar seq
como operações)
for i j 'seq 1 2' 'www.google.com www.yahoo.com';do echo $i $j;done
A saída esperada é
1 www.google.com.br
2 www.yahoo.com
Se i era apenas um número incrementado com cada string, você poderia tentar um laço para e incrementar i a cada iteração .
Por exemplo:
i=1; for j in 'www.google.com' 'www.yahoo.com'; do echo "$((i++)) $j"; done
Permite criar variável para apontar para o local do arquivo
FILE="/home/user/myfile"
O conteúdo do arquivo:
www.google.com
www.yahoo.com
Para obter a saída de:
1 www.google.com
2 www.yahoo.com
Isso pode ser feito por um dos seguintes métodos abaixo:
Usando a variável de contador:
i=1;
cat $FILE | while read line; do
echo "$((i++)) $line";
done
Usando cat -n
(numera todas as linhas de saída)
cat -n $FILE | while read line; do
echo "$line";
done
Usando array:
array=(www.google.com www.yahoo.com);
for i in "${!array[@]}"; do
echo "$((i+1)) ${array[$i]}";
done
Se o seu arquivo já tiver números de linha, por exemplo:
1 www.google.com
2 www.yahoo.com
Faça um loop e divida cada linha para array:
cat $FILE | while read line; do
col=( $line );
echo "${col[0]} ${col[1]}";
done
Para mais informações:
Aqui estão algumas maneiras alternativas, duas curtas e simples:
printf "%s\n" www.google.com www.yahoo.com | cat -n
e
for i in www.google.com www.yahoo.com; do echo $i; done | cat -n
em que ambas as saídas:
1 www.google.com
2 www.yahoo.com
e um pouco mais complexo:
s=(www.google.com www.yahoo.com)
for i in $(seq 1 ${#s[@]}); do
echo $i ${s[i-1]}
done
que gera:
1 www.google.com
2 www.yahoo.com
Na segunda sugestão, estou usando uma matriz chamada s
criada com a linha s=(xx yy)
A sintaxe ${#s[@]}
é o número de elementos na matriz, aqui 2
e o ${s[i-1]}
é elemento no deslocamento i-1
do início da matriz, portanto ${s[1-1]}
é ${s[0]}
e, em seguida é www.google.com
, etc.
Tags command-line bash