Latest web development tutorials

Linux comando sed

Linux comando Daquan Linux comando Daquan

Linux comando sed é usar o script para processar arquivos de texto.

script sed pode estar de acordo com as instruções de manusear, editar arquivos de texto.

Sed é usado principalmente para editar automaticamente um ou mais arquivos, simplificar a operação repetida do documento; procedimentos de conversão escritas.

gramática

sed [-hnV][-e<script>][-f<script文件>][文本文件]

Parâmetro Descrição:

  • -e <script> ou --expression = <script> especificado no script com a opção de processar o arquivo de texto de entrada.
  • -f <arquivo de script> ou --file = <arquivo script> opção para especificar o arquivo de script para processar o arquivo de texto de entrada.
  • -h ou --help Exibe ajudar.
  • -n script ou --quiet ou --silent mostra os resultados depois de apenas tratamento.
  • -V Ou --version informações sobre a versão de exibição.

Ação Descrição:

  • um: novo, pode pegar de volta uma corda, e aquelas cordas aparecerá (atualmente a próxima linha) em uma nova linha -
  • c: substituir, c traseira pode, então, amarrar essas cordas pode substituir linha N1, N2 entre!
  • d: apagar, apagar, porque é ah, então geralmente não aceitar qualquer libra d mais tarde;
  • i: inserção, eu posso ter de volta a corda, e aquelas cordas será (presente em uma linha) em uma nova linha;
  • p: impressão, que vai ser uma seleção de dados de impressão. P normalmente será executado com o parâmetro sed -n ~
  • s: a substituição pode ser substituído trabalhar diretamente milhas! Normalmente, esta é a ação pode ser usado com expressões regulares! Por exemplo 1,20s / velho / novo / g é!

Exemplos

Após a quarta linha testfile arquivo para adicionar uma linha, e emite os resultados para a saída padrão, digite o seguinte comando no prompt de comando:

sed -e 4a\newLine testfile 

Primeiro verifique testfile conteúdos são os seguintes:

$ cat testfile #查看testfile 中的内容  
HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test 

Depois de usar o comando sed, os resultados de saída são as seguintes:

$ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串  
HELLO LINUX! #testfile文件原有的内容  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test  
newline 

Para adicionar unidades de comportamento / Remover

O conteúdo do arquivo / etc / passwd listas e números de linha de impressão, enquanto o primeiro set por 2-5 linhas excluídas!

[root@www ~]# nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
.....(后面省略).....

acção SED como '2,5d', que é a remoção do d! Como as linhas 2-5 para removê-lo, de modo que nenhum dado é exibido na linha 2-5 Lo ~ Além disso, tomar nota, é suposto ser lançado peixes sed -e, não -e vai fazê-lo! Observe também que a parte de trás do sed ação tomada, certifique-se de '' duas aspas simples em torno Oh!

Basta apagar a segunda fila

nl /etc/passwd | sed '2d' 

Para remover o terceiro até a última linha

nl /etc/passwd | sed '3,$d' 

Após a segunda linha (isto é, adicionado à terceira fila) plus "beber chá? 'Palavras!

[root@www ~]# nl /etc/passwd | sed '2a drink tea'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
drink tea
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(后面省略).....

Mas, se é para estar em frente da segunda fila

nl /etc/passwd | sed '2i drink tea' 

Se você quiser aumentar em mais de duas filas atrás da segunda fila para juntar duas linhas, como "beber chá ou ....." e "beber cerveja?"

[root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\
> drink beer ?'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
Drink tea or ......
drink beer ?
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(后面省略).....

Deve ser uma barra invertida "\" para adicionar uma nova linha entre cada fileira de Oh! Assim, o exemplo acima, podemos encontrar a primeira linha na superfície final, há \ existe.

E para substituir as unidades de exibição

O conteúdo de 2-5 fileira substituição ao "Nenhum número 2-5" significa?

[root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number'
1 root:x:0:0:root:/root:/bin/bash
No 2-5 number
6 sync:x:5:0:sync:/sbin:/bin/sync
.....(后面省略).....

Através deste método, somos capazes de substituir toda a linha de dados!

A primeira linha lista apenas 5-7 arquivo / etc / passwd dentro

[root@www ~]# nl /etc/passwd | sed -n '5,7p'
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
</p><p>
可以透过这个 sed 的以行为单位的显示功能, 就能够将某一个文件内的某些行号选择出来显示。
</p>
<h3>数据的搜寻并显示</h3>
<p>搜索 /etc/passwd有root关键字的行</p>
<pre>
nl /etc/passwd | sed '/root/p'
1  root:x:0:0:root:/root:/bin/bash
1  root:x:0:0:root:/root:/bin/bash
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3  bin:x:2:2:bin:/bin:/bin/sh
4  sys:x:3:3:sys:/dev:/bin/sh
5  sync:x:4:65534:sync:/bin:/bin/sync
....下面忽略 

Se a raiz é encontrada, para além de todas as linhas de saída, a saída irá coincidir com a linha.

Ao usar -n irá imprimir todas as linhas nesse modelo.

nl /etc/passwd | sed -n '/root/p'
1  root:x:0:0:root:/root:/bin/bash

Pesquisar e excluir dados

Apagados etc line / / passwd contém a raiz de todos os outros saída de linha

nl /etc/passwd | sed  '/root/d'
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3  bin:x:2:2:bin:/bin:/bin/sh
....下面忽略
#第一行的匹配root已经删除了

dados de pesquisa e executar comandos

Encontrar uma linha oriental padrão de correspondência, a busca / etc / passwd, encontrar a raiz da linha correspondente, por trás da implementação das chaves em um conjunto de comandos, separados por ponto e vírgula entre cada comando, estou aqui para bater substituir blueshell, re-exportá-lo linha:

nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'
1  root:x:0:0:root:/root:/bin/blueshell

Q é a última saída.

Pesquisar e substituir dados

Além de todo o modo de processamento de linha, sed também pode usar alguns dos dados em unidades de pesquisa e substituição. Vi bastante substancialmente semelhante à pesquisa do sed e substituído! Ele é um pouco parecido com isto:

sed 's/要被取代的字串/新的字串/g'

A primeira observação da informação original, use consulta / sbin / ifconfig IP

[root@www ~]# /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
.....(以下省略).....

ip Esta máquina é 192.168.1.100.

A parte da frente do IP a ser excluído

[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

Em seguida, ele é excluir parte do follow-up, a saber: 192.168.1.100 Bcast: Máscara 192.168.1.255: 255.255.255.0

A parte do IP a ser excluído depois

[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
192.168.1.100

Multi-Editar

Um comando sed para excluir a terceira linha / etc / passwd para o fim dos dados, e a bater substituir blueshell

nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1  root:x:0:0:root:/root:/bin/blueshell
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh

-e representa edição multi-ponto, as exclusões de comando primeira editar / etc / passwd para os dados no final da terceira linha, o segundo pesquisas comando bash substituído blueshell.

Diretamente modificar o conteúdo do arquivo (movimentos perigosos)

sed pode modificar diretamente o conteúdo do arquivo, não use o tubo de fluxos de comando ou dados redirecionar! No entanto, uma vez que esta acção será para modificar diretamente o arquivo original, para que você não basta ter a configuração do sistema para testar! Continuamos a usar o arquivo baixado para testar regular_express.txt vê-lo!

Use sed para cada lado da linha se estiver dentro regular_express.txt. É substituído!

[root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt

Use sed diretamente para a última linha regular_express.txt "# Este é um teste."

[root@www ~]# sed -i '$a # This is a test' regular_express.txt

Desde os US $ representa a última linha, e uma nova ação é, portanto, o documento final para adicionar "# Este é um teste!"

sed a opção "-i" para modificar diretamente o conteúdo do arquivo, que é muito útil! Por exemplo, se você tem um milhão de linhas de arquivos que você deseja adicionar alguma linha de texto 100, desta vez usando vim pode ser louco! Como o arquivo é muito grande! Como fazer isso? Sed sobre o uso ah! Através sed modificar / função de substituir diretamente, você não precisa nem usar vim para alterar!

Linux comando Daquan Linux comando Daquan