15 Dicas e truques úteis de comando’ sed ‘ para tarefas diárias de administração do sistema Linux

cada administrador do sistema tem de lidar com ficheiros de texto simples numa base diária. Saber como visualizar certas seções, como substituir palavras e como filtrar conteúdo desses arquivos são habilidades que você precisa ter à mão sem ter que fazer uma pesquisa no Google.,

15 Útil ‘sed’ Comando Dicas e Truques para Linux

neste artigo vamos analisar sed, o conhecido editor de fluxo e compartilhamento de 15 dicas para usá-lo, a fim de realizar os objectivos mencionados anteriormente, e mais.

ver uma série de linhas de um documento

ferramentas como a cabeça e cauda permitem-nos ver o fundo ou o topo de um ficheiro. E se precisarmos de ver uma secção no meio? O seguinte sed one-liner irá devolver as linhas 5 a 10 do myfile.,txt:

# sed -n '5,10p' myfile.txt

Ver o arquivo inteiro, exceto um determinado intervalo

por outro lado, é possível que você deseja imprimir o arquivo inteiro, exceto um determinado intervalo. Para excluir as linhas 20 a 35 do myfile.txt, do:

# sed '20,35d' myfile.txt

ver linhas e intervalos não-consecutivos

é possível que esteja interessado em conjunto de linhas não-consecutivas, ou em mais de uma gama. Vamos mostrar as linhas 5-7 e 10-13 Do Meu ficheiro.,txt:

# sed -n -e '5,7p' -e '10,13p' myfile.txt

Como você pode ver, o -e opção permite-nos executar uma determinada ação (nesse caso, imprimir linhas) para cada intervalo.

Substituir palavras ou caracteres (basic substituição)

Para substituir todas as ocorrências da palavra version com story no myfile.,de ip route show e um pipeline:

# ip route show | sed 's/ */ /g'

Compare o resultado de ip route show com e sem o pipeline:

Substituir Palavras ou Caracteres no Arquivo

Substituir palavras ou caracteres dentro de um intervalo

Se você está interessado em substituir palavras apenas dentro de uma linha de intervalo (de 30 a 40, por exemplo), você pode fazer:

# sed '30,40 s/version/story/g' myfile.txt

claro, você pode indicar uma única linha, através do seu correspondente número em vez de um intervalo.,

usando expressões regulares (substituição avançada) – I

por vezes, os ficheiros de configuração são carregados com comentários. Embora isso seja certamente útil, pode ser útil para exibir apenas as diretivas de configuração, às vezes, se você quiser vê-los todos de uma só vez.

Para remover linhas em branco ou aqueles começando com # do arquivo de configuração do Apache, o que fazer:

# sed '/^#\|^$\| *#/d' httpd.conf

O acento circunflexo sinal seguido pelo sinal de número (^#) indica o início de uma linha, enquanto que ^$ representa as linhas em branco., As barras verticais indicam operações booleanas, enquanto a barra para trás é usada para escapar das barras verticais.

neste caso específico, o arquivo de configuração Apache tem linhas com #’s não no início de algumas linhas, então a *# é usado para remover os bem.

usando expressões regulares (substituição avançada) – II

para substituir uma palavra que começa por maiúsculas ou minúsculas por outra palavra, também podemos usar sed. Para ilustrar, vamos substituir a palavra zip ou Zip por rar em myfile.,txt:

não perca: Use Awk com expressões regulares para filtrar o texto nos ficheiros

ver as linhas que contêm um dado padrão

outra utilização do sed consiste em imprimir as linhas de um ficheiro que corresponda a uma dada expressão regular. Por exemplo, podemos estar interessados em ver as atividades de autorização e autenticação que ocorreram no dia 2 de julho, conforme o log /var/log/secure em um servidor CentOS 7.,

neste caso, o padrão de procura está Jul 2, no início de cada linha:

# sed -n '/^Jul 1/ p' /var/log/secure
Visualizar Registos (Linhas) de Determinada Data

a Inserção de espaços em arquivos

Com a sed, podemos também inserir espaços (linhas em branco) para cada linha não vazia em um arquivo., Para inserir uma linha em branco em cada outra linha na licença, um ficheiro de texto simples, faça:

# sed G myfile.txt

para inserir duas linhas em branco, faça:

# sed 'G;G' myfile.txt

adicione uma maiúscula g separada por um ponto e vírgula Se quiser adicionar mais linhas em branco. A imagem a seguir ilustra o exemplo descrito neste sugestão:

Inserir Espaços no Arquivo

Essa dica pode vir a calhar se você deseja inspecionar um grande arquivo de configuração., Inserir um espaço em branco em todas as outras linhas e canalizar a saída para menos resultará em uma experiência de leitura mais amigável.

emular o dos2unix com a edição em linha

o programa dos2unix converte ficheiros de texto simples da formatação do Windows/Mac para o Unix/Linux, removendo caracteres novos escondidos inseridos por alguns editores de texto usados nessas plataformas. Se não estiver instalado no seu sistema Linux, poderá imitar a sua funcionalidade com o sed em vez de o instalar.,

Na imagem à esquerda podemos ver vários DOS caracteres de nova linha (^M), que mais tarde foram removidos com:

# sed -i 's/\r//' myfile.txt
Secretas Arquivos de Texto do Windows para o Linux

por Favor, note que o -i opção de indicar a edição in-loco. Em seguida, as alterações não serão devolvidas à tela, mas serão salvos para o arquivo.,

nota: pode inserir os caracteres newline Dos ao editar um ficheiro no editor vim com Ctrl+V e .

edição e cópia de segurança do ficheiro original

na dica anterior, utilizámos o sed para modificar um ficheiro, mas não gravámos o ficheiro original. Às vezes, é uma boa idéia para salvar uma cópia de backup do arquivo original, apenas no caso.

para fazer isso, indique um sufixo seguindo a opção -i (dentro de aspas simples) para ser usado para mudar o nome do ficheiro original.,

no exemplo a seguir, substituiremos todas as instâncias deste ou deste (caso de ignorar) por aquele no myfile.txt, e vamos salvar o arquivo original como myfile.txt.orig.

Finalmente, vamos utilizar o utilitário diff para identificar as diferenças entre os dois arquivos:

# sed -i'.orig' 's/this/that/gi' myfile.txt
Usar o sed para Editar e Backup do Arquivo Original

Comutação de pares de palavras

Vamos supor que você tem um arquivo contendo nomes completos no formato de Primeiro nome, Último nome., Para processar adequadamente o arquivo, você pode querer mudar o sobrenome e o primeiro nome.

Nós podemos fazer isso com o sed, de forma relativamente simples:

# sed 's/^\(.*\),\(.*\)$/\, /g' names.txt
Interruptor de Palavras no Ficheiro

Na imagem acima, podemos ver que, entre parênteses, sendo caracteres especiais, precisa ser escapado, assim como os números 1 e 2.

estes números representam as expressões regulares realçadas (que precisam de aparecer dentro dos parêntesis):

  1. 1 representa o início de cada linha até à vírgula.,
  2. 2 é um item de substituição para tudo o que é direito da vírgula ao fim da linha.

o resultado desejado é indicado no formato segunda coluna (último nome) + vírgula + espaço + primeira coluna (primeiro nome). Podes mudar para o que quiseres.

Substituir palavras apenas se uma correspondência separada for encontrada

às vezes substituir todas as instâncias de uma dada palavra, ou algumas aleatórias, não é precisamente o que precisamos. Talvez precisemos de fazer a substituição se for encontrada uma correspondência separada.,

Por exemplo, podemos querer substituir o start por stop apenas se o word services for encontrado na mesma linha. Nesse cenário, aqui está o que vai acontecer:

We need to start partying at work,but let’s remember to start all services first.

na primeira linha, start não será substituído por stop uma vez que o word services não aparece nessa linha, em oposição à segunda linha.,

# sed '/services/ s/start/stop/g' msg.txt
Substituir Palavras no Ficheiro

Executar dois ou mais substituições de uma vez

Você pode combinar dois ou mais substituições de um único comando sed. Vamos substituir as palavras que estão no meu ficheiro.txt com este e verso, respectivamente.,

Note como isso pode ser feito por meio de um ordinário sed substituição de comando, seguido por um ponto e vírgula e um segundo substituição de comando:

# sed -i 's/that/this/gi;s/line/verse/gi' myfile.txt

Esta dica é ilustrado na imagem a seguir:

Substituir Várias Palavras no Ficheiro

a Combinação de sed e outros comandos

claro, sed pode ser combinado com outras ferramentas, a fim de criar mais poderosos comandos., Por exemplo, vamos usar o exemplo dado na dica #4 e extrair o nosso endereço IP do resultado do comando ip route.

Vamos começar por imprimir apenas a linha onde a palavra src é. Então vamos converter vários espaços em um único., Finalmente, vamos cortar a 9 de campo (considerando um único espaço como separador de campo), que é onde o endereço IP é:

# ip route show | sed -n '/src/p' | sed -e 's/ */ /g' | cut -d' ' -f9

A imagem abaixo ilustra a cada passo do comando acima:

Combinar sed com Outros Comandos

Resumo

neste guia, vamos ter compartilhado 15 sed dicas e truques para ajudar você com o seu diário de tarefas de administração do sistema. Há alguma outra dica que use regularmente e gostaria de partilhar connosco e com o resto da comunidade?,

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *