sed-substituindo e usando um padrão com várias linhas

1

Eu tenho um arquivo CSV com várias linhas. Eu queria copiar os mesmos dados várias vezes e, a cada vez, substituir um caractere específico por outro de um arquivo diferente.

Exemplo :

Abaixo estão dois arquivos, um csv e um arquivo ref (contendo de A a Z) caracteres. Eu queria copiar o conteúdo csv 26 vezes (A a Z) e cada vez substituindo a variável VAR por A, B, C, .... Z.

cat csv_file

some text with VAR,data 2,data 3,data 4,some text and VAR
,,,data 4,some text
,,,data 4,some text

ref de gato

A
B
C
...so on upto 
Z

Resultado:

some text with A,data 2,data 3,data 4,some text and A
,,,data 4,some text
,,,data 4,some text
some text with B,data 2,data 3,data 4,some text and B
,,,data 4,some text
,,,data 4,some text
..
... so on

o que estou fazendo é

DATA="some text with & following text,data 2,data 3,data4,some text and_&\n,,,data4,some text\n,,,data 4,some text"

sed -e "s/^.*$/$DATA/g" ref

Existe alguma outra maneira de obter o mesmo resultado, mas com o nome do arquivo em vez da variável (DATA)?

    
por K Negi 07.12.2017 / 19:22

1 resposta

0

Abaixo do comando toda vez que ele substitui o VAR por {A..Z}

Funciona bem

for i in 'cat /var/tmp/ref'; do  sed "s/VAR/$i/g" csv_file ;done

Exemplo de saída

some text with A,data 2,data 3,data 4,some text and A
,,,data 4,some text
,,,data 4,some text
some text with B,data 2,data 3,data 4,some text and B
,,,data 4,some text
,,,data 4,some text
    
por 07.12.2017 / 19:44