15 dicas e truques de comando 'sed' úteis para tarefas diárias de administração do sistema Linux
- 2315
- 360
- Loren Botsford
Todo administrador do sistema precisa lidar com arquivos de texto sem formatação diariamente. Saber como visualizar determinadas seções, como substituir as palavras e como filtrar o conteúdo desses arquivos são habilidades que você precisa ter à mão sem ter que fazer uma pesquisa no Google.
15 dicas e truques de comando 'sed' úteis para LinuxNeste artigo, revisaremos a Sed, o conhecido editor de fluxo, e compartilharemos 15 dicas para usá-lo para atingir os objetivos mencionados anteriormente e mais.
1. Visualizando uma variedade de linhas de um documento
Ferramentas como cabeça e cauda nos permitem visualizar a parte inferior ou a parte superior de um arquivo. E se precisarmos ver uma seção no meio? A seguinte sed uma linha retornará linhas 5 através 10 de meu arquivo.TXT:
# sed -n '5,10p' myfile.TXT
2. Visualizando o arquivo inteiro, exceto um determinado intervalo
Por outro lado, é possível que você queira imprimir o arquivo inteiro, exceto um determinado intervalo. Para excluir linhas 20 através 35 de meu arquivo.TXT, fazer:
# sed '20, 35d 'myfile.TXT
3. Visualizando linhas e intervalos não consecutivos
É possível que você esteja interessado em um conjunto de linhas não consecutivas, ou em mais de um intervalo. Vamos exibir linhas 5-7 e 10-13 de meu arquivo.TXT:
# sed -n -e '5,7p' -e '10, 13p 'myfile.TXT
Como você pode ver, o -e
a opção nos permite executar uma determinada ação (neste caso, linhas de impressão) para cada intervalo.
4. Substituindo palavras ou caracteres (substituição básica)
Para substituir todas as instâncias da palavra versão
com história
em meu arquivo.TXT, fazer:
# sed 's/versão/story/g' myfile.TXT
Além disso, você pode considerar usar Gi
em vez de g
Para ignorar o caso do personagem:
# sed 's/versão/story/gi' myfile.TXT
Para substituir vários espaços em branco por um único espaço, usaremos a saída de IP Route Show
e um pipeline:
# IP Route Show | sed 's/ *// g'
Compare a saída de IP Route Show
com e sem o pipeline:
5. Substituindo palavras ou caracteres dentro de um intervalo
Se você estiver interessado em substituir as palavras apenas dentro de uma linha de linha (30 através 40, por exemplo), você pode fazer:
# sed '30, 40 s/versão/história/g 'myfile.TXT
Obviamente, você pode indicar uma única linha através de seu número correspondente em vez de um intervalo.
6. Usando expressões regulares (substituição avançada) - I
Às vezes, os arquivos de configuração são carregados com comentários. Embora isso seja certamente útil, pode ser útil exibir apenas as diretivas de configuração às vezes, se você quiser vê -las todos de relance.
Para remover linhas vazias ou aquelas que começam com #
No arquivo de configuração do Apache, faça:
# sed '/^# \ |^$ \ | *#/d 'httpd.conf
O sinal de alerta seguido pelo sinal numérico (^#)
indica o início de uma linha, enquanto ^$
representa linhas em branco. As barras verticais indicam operações booleanas, enquanto a barra para trás é usada para escapar das barras verticais.
Neste caso em particular, o arquivo de configuração do Apache tem linhas #'s
não no início de algumas linhas, então *#
é usado para removê -los também.
7. Usando expressões regulares (substituição avançada) - ii
Para substituir uma palavra começando por maiúsculas ou minúsculas por outra palavra, também podemos usar sed. Para ilustrar, vamos substituir a palavra fecho eclair ou Fecho eclair com rar em meu arquivo.TXT:
# sed 's/[zz] ip/rar/g' myfile.TXT
Não perca: Use Awk com expressões regulares para filtrar o texto em arquivos
8. Visualizando linhas contendo com um determinado padrão
Outro uso de sed consiste em imprimir as linhas de um arquivo que corresponde a uma determinada expressão regular. Por exemplo, podemos estar interessados em ver as atividades de autorização e autenticação que ocorreram em 2 de julho, conforme /var/log/seguro Faça login a CENTOS 7 servidor.
Nesse caso, o padrão a procurar é 2 de julho No início de cada linha:
# sed -n '/^Jul 1/p'/var/log/secureExibir logs (linhas) de data específica
9. Inserindo espaços em arquivos
Com sed, Também podemos inserir espaços (linhas em branco) para cada linha não vazia em um arquivo. Para inserir uma linha em branco todas as outras linhas em LICENÇA, Um arquivo de texto simples, faça:
# sed g myfile.TXT
Para inserir duas linhas em branco, faça:
# sed 'g; g' myfile.TXT
Adicione um maiúsculas g separado por um semicolon se você quiser adicionar mais linhas em branco. A imagem a seguir ilustra o exemplo descrito nesta dica:
Insira espaços no arquivoEsta dica pode ser útil se você quiser inspecionar um grande arquivo de configuração. Inserir um espaço em branco em todas as outras linhas e tubular a saída para menos resultará em uma experiência de leitura mais amigável.
10. Emulando dos2unix com edição embutida
O Dos2unix Programa converte arquivos de texto simples da formatação Windows/Mac para Unix/Linux, removendo caracteres ocultos de nova linha inseridos por alguns editores de texto usados nessas plataformas. Se não estiver instalado em seu sistema Linux, você pode imitar sua funcionalidade com sed Em vez de instalá -lo.
Na imagem à esquerda, podemos ver vários caracteres do DOS Newline (^M)
, que foram posteriormente removidos com:
# sed -i 's/\ r //' myfile.TXTArquivos de texto secretos do Windows para Linux
Por favor, observe que o -eu
Opção Indique edição no local. Em seguida, as alterações não serão devolvidas à tela, mas serão salvas no arquivo.
Observação: Você pode inserir os caracteres do Newline do DOS ao editar um arquivo no editor do VIM com Ctrl+v
e Ctrl+m
.
11. Edição no local e backup de arquivo original
Na dica anterior, usamos sed Para modificar um arquivo, mas não salvou o arquivo original. Às vezes é uma boa ideia salvar uma cópia de backup do arquivo original apenas para o caso.
Para fazer isso, indique um sufixo após o -eu
opção (citações únicas internas) a ser usada para renomear o arquivo original.
No exemplo seguinte, substituiremos todas as instâncias de esse ou Esse (ignorando o caso) com isso em meu arquivo.TXT, E vamos salvar o arquivo original como meu arquivo.TXT.orig.
Por fim, usaremos o utilitário Diff para identificar as diferenças entre os dois arquivos:
# sed -i '.orig "s/that/that/gi 'myfile.TXTUse sed para editar e fazer backup de arquivo original
12. Trocar de pares de palavras
Vamos supor que você tenha um arquivo contendo nomes completos no formato Primeiro nome, Sobrenome. Para processar adequadamente o arquivo, você pode mudar Sobrenome e Primeiro nome.
Podemos fazer isso com sed Facilmente facilmente:
# sed 's/^\ (.*\), \ (.*\) $ /\, /g 'nomes.TXTAlternar palavras no arquivo
Na imagem acima, podemos ver que parênteses, sendo personagens especiais, precisam ser escapes, assim como os números 1 e 2.
Esses números representam as expressões regulares destacadas (que precisam aparecer em parênteses):
- 1 representa o início de cada linha para a vírgula.
- 2 é um espaço reservado para tudo o que está certo da vírgula até o fim da linha.
A saída desejada é indicada no formato SecondColumn (Sobrenome) + vírgula + espaço + Primeira coluna (Primeiro nome). Sinta -se à vontade para mudar para tudo o que desejar.
13. Substituindo palavras apenas se uma correspondência separada for encontrada
Às vezes, substituir todas as instâncias de uma determinada palavra, ou poucos aleatórios, não é precisamente o que precisamos. Talvez precisemos executar a substituição se uma partida separada for encontrada.
Por exemplo, podemos querer substituir começar com parar Somente se a palavra serviços for encontrada na mesma linha. Nesse cenário, aqui está o que vai acontecer:
Precisamos começar a festejar no trabalho, mas lembre -se de iniciar todos os serviços primeiro.
Na primeira linha, começar não será substituído por parar Como a palavra serviços não aparece nessa linha, em oposição à segunda linha.
# sed '/Services/s/start/stop/g' msg.TXTSubstitua as palavras no arquivo
14. Realizando duas ou mais substituições de uma só vez
Você pode combinar duas ou mais substituições, um único sed comando. Vamos substituir as palavras que e linha em meu arquivo.TXT com este e versículo, respectivamente.
Observe como isso pode ser feito usando um comum sed Comando de substituição seguido de um semicolon e um segundo comando de substituição:
# sed -i 's/that/this/gi; s/linha/verso/gi' myfile.TXT
Esta dica é ilustrada na imagem a seguir:
Substitua várias palavras no arquivo15. Combinando sed e outros comandos
Claro, sed pode ser combinado com outras ferramentas para criar comandos mais poderosos. Por exemplo, vamos usar o exemplo dado em Dica #4 e extraia nosso endereço IP da saída do rota IP
comando.
Começaremos imprimindo apenas a linha onde a palavra src
é. Então vamos converter vários espaços em um único. Finalmente, vamos cortar o 9º Campo (considerando um único espaço como separador de campo), que é onde está o endereço IP:
# IP Route Show | sed -n '/src/p' | sed -e 's/ *// g' | corte -d "-f9
A imagem abaixo ilustra cada etapa do comando acima:
Combine sed com outros comandosResumo
Neste guia, compartilhamos 15 dicas e truques sed Para ajudá -lo com suas tarefas diárias de administração do sistema. Existe alguma outra dica que você usa regularmente e gostaria de compartilhar conosco e o resto da comunidade?
Nesse caso, sinta -se à vontade para nos informar usando o formulário de comentário abaixo. Perguntas e comentários também são bem -vindos - estamos ansiosos para ouvir de você!
Não perca: Dominar o comando 'awk' linux com dicas e truques
- « Aprenda a usar variáveis awk, expressões numéricas e operadores de atribuição - Parte 8
- 9 Melhores ferramentas de comparação e diferença de arquivo (diff) para Linux »