Comando Sed ou Stream Editor é um utilitário muito poderoso oferecido pelos sistemas Linux/Unix. É utilizado principalmente para substituição de texto , encontrar & substituir mas também pode efectuar outras manipulações de texto como inserção, eliminação, pesquisa, etc. Com SED, podemos editar ficheiros completos sem realmente ter de o abrir. Sed também suporta o uso de expressões regulares, o que faz de sed uma ferramenta de manipulação de teste ainda mais poderosa.

Neste artigo, aprenderemos a usar o comando SED com a ajuda de alguns exemplos. A sintaxe básica para usar o comando sed é,

sed OPÇÕES…

Sed-Command-Options

p>Agora vamos ver alguns exemplos.

Exemplo :1) Exibindo texto parcial de um ficheiro

Com sed, podemos ver apenas alguma parte de um ficheiro em vez de ver todo o ficheiro. Para ver algumas linhas do ficheiro, usar o seguinte comando,

$ sed -n 22,29p testfile.txt

aqui, a opção ‘n’ suprime a impressão de todo o ficheiro & a opção ‘p’ imprimirá apenas linhas de 22 a 29.

Exemplo :2) Mostrar tudo excepto algumas linhas

Para mostrar todo o conteúdo de um ficheiro excepto alguma parte, use o seguinte comando,

$ sed 22,29d testfile.txt

Opção ‘d’ irá remover as linhas mencionadas da saída.

Exemplo :3) Mostrar cada 3ª linha começando com a Nª linha

Exemplo :4 ) Apagar uma linha usando o comando sed

Para apagar uma linha com sed de um ficheiro, use o seguinte comando,

$ sed Nd testfile.txt

onde ‘N’ é o número de linha & a opção ‘d’ apagará o número de linha mencionado. Para apagar a última linha do ficheiro, utilizar

$ sed $d testfile.txt

Exemplo :5) Apagar um intervalo de linhas

Para apagar um intervalo de linhas do ficheiro, execute

$ sed '29,34d' testfile.txt

Isto apagará as linhas 29 a 34 do ficheiro testfile.txt.

Exemplo :6) Apagar linhas que não as mencionadas

Para apagar linhas que não as mencionadas de um ficheiro, usaremos ‘!’

$ sed '29,34!d' testfile.txt

em nenhum lugar ‘!” a opção é usada como não, pelo que inverterá a condição, ou seja, não apagará as linhas mencionadas. Todas as outras linhas 29-34 serão apagadas dos ficheiros testfile.txt.

Example :7) Adicionando linhas/espaços em branco

Para adicionar uma linha em branco após cada linha não em branco, usaremos a opção ‘G’,

$ sed G testfile.txt

Exemplo :8) Pesquisar e Substituir uma string usando sed

Para pesquisar & substituir uma string do ficheiro, usaremos o seguinte exemplo,

$ sed 's/danger/safety/' testfile.txt

a opção ‘s’ procurará a palavra ‘perigo’ & substitui-la por ‘segurança’ em cada linha apenas para a primeira ocorrência.

Exemplo :9) Pesquisar e substituir uma string de todo o ficheiro usando sed

Para substituir completamente a palavra do ficheiro, usaremos a opção ‘g’ por ‘s’,

$ sed 's/danger/safety/g' testfile.txt

Exemplo :10) Substituir a n-ésima ocorrência de padrão de corda

Podemos também substituir uma corda na n-ésima ocorrência de um ficheiro. Como substituir ‘perigo’ por ‘segurança’ apenas na segunda ocorrência,

$ sed ‘s/danger/safety/2’ testfile.txt

Para substituir ‘perigo’ na segunda ocorrência de cada linha de todo o ficheiro, usar

$ sed 's/danger/safety/2g' testfile.txt

Exemplo :11) Substituir uma corda numa determinada linha

Para substituir uma corda apenas de uma determinada linha, use

$ sed '4 s/danger/safety/' testfile.txt

Isto substituirá apenas a corda da 4ª linha do ficheiro. Podemos também mencionar um intervalo de linhas em vez de uma única linha,

$ sed '4,9 s/danger/safety/' testfile.txt

Exemplo :12) Para adicionar uma linha depois/antes da pesquisa correspondente

Para adicionar uma nova linha com algum conteúdo a depois de cada correspondência de padrão, use a opção ‘a’ ,

$ sed '/danger/a "This is new line with text after match"' testfile.txt

Para adicionar uma nova linha com algum conteúdo a antes de cada correspondência de padrão, use a opção ‘i’,

$ sed '/danger/i "This is new line with text before match" ' testfile.txt

Exemplo :13) Alterar uma linha inteira com padrão combinado

Para alterar uma linha inteira para uma nova linha quando um padrão de pesquisa corresponde, precisamos de usar a opção ‘c’ com sed,

$ sed '/danger/c "This will be the new line" ' testfile.txt

Então quando o padrão corresponde a ‘perigo’, a linha inteira será alterada para a linha mencionada.

Opções avançadas com sed

Upa até agora só usávamos expressões simples com sed, agora vamos discutir alguns usos avançados de sed com regex,

Exemplo :14) Executando múltiplos comandos de sed

Se precisarmos de executar múltiplas expressões de sed, podemos usar a opção ‘e’ para encadear os comandos de sed,

$ sed -e 's/danger/safety/g' -e 's/hate/love/' testfile.txt

Exemplo :15) Fazer uma cópia de segurança antes de editar um ficheiro

Para criar uma cópia de segurança de um ficheiro antes de o editarmos, usar a opção ‘-i.bak’,

$ sed -i.bak -e 's/danger/safety/g' testfile.txt

Isto irá criar uma cópia de segurança do ficheiro com extensão .bak. Também pode utilizar outra extensão se desejar.

Exemplo :16) Apagar uma linha de ficheiro que comece com & terminando com um padrão

Para apagar uma linha que comece com uma determinada cadeia de caracteres & terminando com outra cadeia de caracteres, use

$ sed -e 's/^danger.*stops$//g' testfile.txt

Isto irá apagar a linha com ‘perigo’ no início & ‘pára’ no fim & pode ter qualquer número de palavras no meio, ‘.*’ define essa parte.

Exemplo :17) Linhas anexas

Para adicionar algum conteúdo antes de cada linha com sed & regex, use

$ sed -e 's/.*/testing sed &/' testfile.txt

Então agora cada linha terá ‘test sed’ antes dele.

Exemplo :18) Remover todas as linhas comentadas & linhas vazias

Para remover todas as linhas comentadas, i.e. linhas com # & todas as linhas vazias, use

$ sed -e 's/#.*//;/^$/d' testfile.txt

Para remover apenas as linhas comentadas, use

$ sed -e 's/#.*//' testfile.txt

Exemplo :19) Obter lista de todos os nomes de utilizador de /etc/passwd

Para obter a lista de todos os nomes de utilizador do ficheiro /etc/passwd, use

$ sed 's/\(*\).*/\1/' /etc/passwd

uma lista completa todos os nomes de utilizador serão gerados no ecrã como saída.

Exemplo :20) Evitar a sobreposição de ligações do sistema com o comando sed

‘sed -i’ comando foi conhecido para remover ligações do sistema & criar apenas ficheiros regulares no lugar do ficheiro de ligação. Assim, para evitar tal situação & evitar que ‘sed -i’ destrua as ligações, usar as opções ‘-follow-symklinks’ com o comando a ser executado.

Vamos assumir que quero desactivar o SELinux no CentOS ou RHEL Severs

Deixe uma resposta

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