Variável (array) contendo várias linhas de texto? [RESOLVIDO]

1. Variável (array) contendo várias linhas de texto? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/09/2016 - 10:31h

Pode isso Arnaldo?
Então, sei que dá pra colocar vários termos numa "array", mas eles ficam na mesma linha. O que eu quero é que cada termo ficasse numa linha diferente. Isso é possível?


  


2. Seja mais claro!

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 12/09/2016 - 11:40h

O que você quer afinal?
Definir um vetor ou armazenar as linhas dum texto num vetor?

- Se for a primeira:

declare -a vetor
vetor=(
um \
dois \
tres \
quatro \
cinco \
)

- Se for a segunda opção, tenta assim:

read -a vetor <<< $(cat arquivo)



3. Re: Variável (array) contendo várias linhas de texto?

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/09/2016 - 12:33h

O que estou tentando fazer é um script que insira um texto dentro de um arquivo num ponto específico.
Esse texto, com várias linhas, ficaria dentro de uma variável.

Exemplo:
O arquivo.txt tem o seguinte conteúdo:
Início
Meio
Fim

O script adicionaria o seguinte conteúdo ao arquivo.txt:
texto1
texto2
texto3

Só que isso seria inserido depois da palavra "Meio". Daí, pensei em usar o comando sed para procurar a palavra "Meio" e inserir o conteúdo da variável depois dele:
VAR=("texto1" "texto2" "texto3")
$ sed -i "/Meio/a \\${VAR[*]}" arquivo.txt

Eu quero que fique assim:
Início
Meio
texto1
texto2
texto3
Fim

E não assim:
Início
Meio
texto1 texto2 texto3
Fim



4. Re: Variável (array) contendo várias linhas de texto? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/09/2016 - 13:14h

Descobri um jeito de fazer:

script:
#!/bin/bash

VAR[1]="tres"
VAR[2]="dois"
VAR[3]="um"

for index in 1 2 3
do
sed -i "/Meio/a \\${VAR[index]}" arquivo.txt
done

$ cat arquivo.txt
Inicio
Meio
Fim

$ ./script && cat arquivo
Inicio
Meio
um
dois
tres

Fim


Se alguém pensar em outras maneiras mais "elegantes" de fazer isso digam aqui :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts