Substituir parte do arquivo de texto usando o script bash

3

Estou escrevendo um script de shell (bash) para buscar e construir vários bits de software. O script também grava vários pequenos arquivos de configuração e precisa alterar alguns arquivos de configuração pré-existentes. Qual é a melhor maneira de encontrar e substituir algumas linhas de um arquivo de texto de um script bash?

Isso soa como um trabalho para sed , mas eu não entendo a sintaxe ...

    
por Frozenskys 28.09.2010 / 11:51

3 respostas

4

awk / sed / bash / Python / Perl / Ruby e a maioria das outras ferramentas / linguagens de programação podem manipular arquivos. A melhor maneira é a maneira como você está familiarizado e confortável. Se você não sabe nada sobre sed, procure e aprenda sobre isso. Caso contrário, se você tem uma linguagem de programação que você sabe, apenas faça isso. Aqui está um exemplo de script

exec 6<"file"
while read -r line <&6
do
  case "$line" in 
    *pattern* )
       line="${line//word/replace}"
  esac
  echo "$line"
done > "out"
exec 6<&-
mv out file

exemplo de sed

sed 's/word/replace/g' file

exemplo do awk

awk '{gsub(/word/,"replace")}1' file > t && mv t file

Exemplo de Python (use 'with' para versões posteriores)

for line in open("file"):
    if "pattern" in line:
        line=line.replace("pattern","replace")
    print line
    
por 28.09.2010 / 12:51
1

Não é uma resposta, mas: link

    
por 28.09.2010 / 12:21
1

sed s/@var@/$VALUE/g <config.in >config , mas tenha cuidado com barras perdidas / in $VALUE - talvez seja necessário escapar deles ou usar outro caractere separador.

    
por 28.09.2010 / 12:57

Tags