atualiza linhas em um arquivo

0

Eu tenho um arquivo, onde ele tem alguns campos.Por exemplo,

var One = "fcb";
var Two = "abc";

Como posso atualizar / substituir essas linhas usando um script?

Eu quero ser capaz de fazer algo como:

   echo -n "Enter One: "
   read  One
   echo -n "Enter Two: "
   read  Two

   sed -i $One ./file.js
   sed -i $Two ./file.js

Mas, quando eu executo o script:

Enter One: fge3
Enter Two: ghj5

mostra:

sed: -e expression #1, char 1: unknown command: 'f'
sed: -e expression #1, char 2: extra characters after command
    
por George 29.06.2016 / 14:57

1 resposta

1

O comando sed seria parecido com

sed -i -e 's/var One =.*/var One = "'$One'";/' -e 's/var Two =.*/var Two = "'$Two'";/' file.js

Editar para adicionar:

Cuidado com uma pegadinha ... se o usuário digitar caracteres desagradáveis como foo/bar como resposta: -)

2ª edição:

Se você não quiser permitir o caractere ruim, poderá abortar por exemplo, após o read One , você pode adicionar:

if [[ "$One" =~ "/" ]]; then echo bad char / not allowed; exit; fi

Você poderia escolher um caractere diferente para a instrução sed (por exemplo, um | em vez de / ) e proibir isso.

Caso contrário, você precisará tentar algumas citações inteligentes ...

One=$(echo "$One" | sed 's/\//\\//g')
    
por 29.06.2016 / 15:04