01. Sintaxe geral para sed
02. Substitua a string no arquivo por script Bash sed
03. sed g e eu comandos para insensível global e case
04. Combinação de dígitos sed
05. Sintaxe geral para awk
06. Substitua a string no arquivo por script Bash Awk
07. Substitua a string no arquivo por script de bash puro
08. Substitua a string no arquivo por Perl One Liner
Dados de amostra para substituição de string bash
Um arquivo de texto nomeado Vendas.TXT Com o seguinte conteúdo, é criado para mostrar as operações de substituição.
Vendas.TXT
Sintaxe geral para sed: substitua a string em um arquivo
A sintaxe básica do 'sed'O comando para substituir a string específico em um arquivo é dado abaixo.
Sintaxe
sed -i 's/search_string/replystring/' nome do arquivo
Cada parte da sintaxe acima é explicada abaixo.
'-eu' A opção é usada para modificar o conteúdo do arquivo original com a sequência de substituição se a sequência de pesquisa existir no arquivo.
'S' indica o comando substituto.
'seqüência de pesquisa' contém o valor da string que será pesquisado no arquivo para substituição.
'Substituir_string' contém o valor da string que será usado para substituir o conteúdo do arquivo que corresponde ao 'seqüência de pesquisa' valor.
'nome do arquivo' contém o nome do arquivo onde a pesquisa e a substituição serão aplicadas.
Exemplo 1: Substitua o arquivo pelo comando 'sed'
No script a seguir, o texto de pesquisa e substituição será retirado do usuário. Se a sequência de pesquisa existir em 'vendas.txt ', então será substituído pela corda de substituição. Aqui, uma pesquisa sensível ao caso será realizada.
#!/BIN/BASH
# Atribua o nome do arquivo
filename = "Vendas.TXT"
# Pegue a sequência de pesquisa
Leia -P "Digite a string de pesquisa:" Search
# Pegue a string de substituição
Leia -P "Digite a string de substituição:" Substitua
Se [[$ search != "" && $ substitua != ""]]; então
sed -i "s/$ search/$ substituir/" $ nome do arquivo
fi
Saída:
Exemplo 2: Substitua o arquivo pelo comando 'sed' com 'g' e 'i' sinalizador
O script a seguir funcionará como o exemplo anterior, mas a sequência de pesquisa será pesquisada globalmente pela bandeira 'G', e a pesquisa insensível ao caso será feita para a bandeira 'i'.
#!/BIN/BASH
# Pegue a sequência de pesquisa
Leia -P "Digite a string de pesquisa:" Search
# Pegue a string de substituição
Leia -P "Digite a string de substituição:" Substitua
Se [[$ search != "" && $ substitua != ""]]; então
sed -i "s/$ search/$ substituir/gi" $ 1
fi
Saída:
Exemplo 3: Substitua o arquivo pelo comando 'sed' e o padrão de dígito correspondente
O script a seguir procurará todo o conteúdo numérico em um arquivo e substituirá o conteúdo adicionando o '$' símbolo no início dos números.
#!/BIN/BASH
# Verifique o valor do argumento da linha de comando existe ou não
Se [$ 1 != ""]; então
# Pesquise toda a string contendo dígitos e adicione $
sed -i 's/\ b [0-9] \ 5 \ \ b/$ &/g' $ 1
fi
Saída:
Substitua a string em um arquivo com o comando 'awk'
O 'estranho O comando é outra maneira de substituir a string em um arquivo, mas este comando não pode atualizar o arquivo original diretamente como o 'sed ' comando.
Exemplo 4: Substitua o arquivo pelo comando 'awk'
O script a seguir armazenará o conteúdo atualizado no Temp.TXT arquivo que será renomeado pelo arquivo original.
#!/BIN/BASH
# Verifique o valor do argumento da linha de comando existe ou não
Se [$ 1 != ""]; então
# Pesquise toda a string com base na data
awk 'sub ("02/06/2020", "12/06/2020") print' $ 1> temp.txt && mv temp.TXT $ 1
fi
Saída:
No exemplo acima, o comando 'awk' é usado para procurar uma string “02/06/2020”, Qual é a última data em nosso arquivo de amostra. A string correspondente será substituída por uma nova string “12/06/2020”. A string resultando se substituída ou não é impressa em cada linha.
Exemplo 5: Substitua a string no arquivo por script de bash puro
Neste exemplo, faremos o mesmo trabalho com uma festa durante o loop e um comando de substituição de string bash. Vamos escrever a saída para um TMP Arquive e substitua o original no final do script. Veja o código abaixo:
#!/BIN/BASH
enquanto lida linha; fazer
# Substitua todas as instâncias na linha de Khulna por Dhaka
eco $ line // khulna/dhaka
feito < Sales.txt > /tmp/vendas.o.TXT
MV /TMP /Vendas.o.Vendas TXT.TXT
Você pode ver o comando Echo fará uma substituição na variável de linha, pois o script lê cada linha no arquivo de texto e substituir todas as instâncias de Khulna com a nova string Dhaka. O loop while lê a partir do arquivo de entrada Vendas.TXT e grava no arquivo de saída /tmp/vendas.o.TXT. Finalmente, o arquivo de saída temporário substitui o arquivo original pelo MV comando.
Saída:
Exemplo 6: Substitua a string no arquivo por Perl One Liner
Esta tarefa é realmente super simples com Perl. Perl é um idioma antigo e menos popular, mas extremamente poderoso. Isso pode ser feito com um comando de linha na linha de comando Bash:
perl -pi.Bak -e 's/dhaka/bogra/g' vendas.TXT-pi.Bak diz a Perl para processar o arquivo no lugar e também criar um arquivo de backup com o .Extensão Bak. A substituição será todas as instâncias de Dhaka para Bogra Como o novo texto. Aqui você pode ver a saída fácil deste comando:
SAÍDA:
Conclusão
Este artigo mostrou como usar scripts de bash para substituir strings em um arquivo pela pesquisa e substituição na linha de comando em bash. Existem muitas maneiras de fazer isso, incluindo com comandos sed, awk, perl; Você pode usar scripts nativos de bash com loops e regex e há mais maneiras de não ser discutido aqui. Bash e Linux têm muitas maneiras de fazer o mesmo trabalho.