Latest web development tutorials

comando sed Linux

Linux comando Daquan Linux comando Daquan

Linux comando sed es utilizar la secuencia de comandos para procesar archivos de texto.

macro en sed puede estar de acuerdo con las instrucciones de manejar, editar archivos de texto.

Sed se utiliza principalmente para editar automáticamente uno o más archivos; simplificar la operación repetida del documento; procedimientos de conversión escritas.

gramática

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

Descripción de parámetros:

  • -e <script> o = --expression <script> especificado en el guión con la opción de procesar el archivo de texto de entrada.
  • -f <archivo de script> o --file = <script> opción para especificar el archivo de secuencia de comandos para procesar el archivo de texto de entrada.
  • -h o --help Muestra la ayuda.
  • -n script o --quiet o --silent muestra los resultados tras único tratamiento.
  • -V O --version Muestra información de versión.

Acción Descripción:

  • R: nuevo, puede recuperar una cadena, y aparecerán esas cadenas (actualmente la siguiente línea) en una nueva línea -
  • c: sustituir, c trasera puede entonces tener cadena de estas cadenas puede reemplazar la línea n1, n2 entre!
  • d: borrar, eliminar porque es ah, por lo general, no aceptar ninguna libra d más adelante;
  • i: insertar, puedo tomar de nuevo la cadena, y esas cadenas seré (presente en una línea) en una nueva línea;
  • P: impresión, que será una selección de los datos de impresión. P suele ejecutar con el parámetro sed -n ~
  • s: la sustitución puede ser sustituido trabajar directamente millas! Por lo general, esta acción S puede ser utilizado con las expresiones regulares! Por ejemplo 1,20s / viejo / nuevo / g es!

Ejemplos

Después de la cuarta línea testfile archivo para agregar una línea, y envía el resultado a la salida estándar, introduzca el siguiente comando en el símbolo del sistema:

sed -e 4a\newLine testfile 

En primer lugar comprobar testfile contenido es el siguiente:

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

Después de usar comando sed, los resultados de salida son los siguientes:

$ 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 añadir unidades de comportamiento / Quitar

El contenido de / etc / passwd y listas de números de línea de impresión, ajuste, mientras que el primer 2-5 filas eliminadas!

[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
.....(后面省略).....

sed de acción como '2,5D', que consiste en eliminar el d! Debido a que las líneas 2-5 para eliminar de él, por lo que no se muestran datos sobre la línea 2-5 Mín ~ También, tome nota, se supone que debe ser liberado peces sed -e, sin -e lo hará! También tenga en cuenta que la parte posterior sed toma acción, asegúrese de que '' dos comillas simples alrededor de Oh!

Simplemente elimine la segunda fila

nl /etc/passwd | sed '2d' 

Para quitar la tercera a la última línea

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

Después de la segunda fila (es decir, añadido a la tercera fila), además de "té de la bebida? 'Palabras!

[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
.....(后面省略).....

Pero si ha de estar al frente de la segunda fila

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

Si desea aumentar en más de dos filas detrás de la segunda fila para unir dos líneas, como "Beba té o ....." y "beber cerveza?"

[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
.....(后面省略).....

Debe ser una barra invertida "\" para añadir una nueva fila entre cada fila de Oh! Así, el ejemplo anterior, podemos encontrar la primera fila de la superficie final, no existe \.

Y sustituir las unidades de pantalla

El contenido de 2-5 fila sustitución de "No hay un número 2-5" significan?

[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
.....(后面省略).....

A través de este método que son capaces de reemplazar toda la fila de datos!

La primera línea muestra solamente 5-7 / 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
....下面忽略 

Si se encuentra la raíz, además de todas las líneas de salida, la salida coincida con la línea.

Al usar -n imprimirá todas las líneas de la plantilla.

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

Buscar y eliminar los datos

Suprimido línea / etc / passwd contiene la raíz de toda otra salida de línea

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已经删除了

datos de búsqueda y ejecutar comandos

Encontrar una línea oriental de coincidencia de patrones, la búsqueda / etc / passwd, encontrar la raíz de la fila correspondiente, tras la aplicación de las llaves en un conjunto de comandos, separados por punto y coma entre cada comando, para golpear a reemplazar blueshell, reexportarla línea:

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

Q es la última salida.

Buscar y reemplazar datos

Además de todo el modo de procesamiento en línea, sed también puede utilizar algunos de los datos en unidades de búsqueda y reemplazo. Vi muy sustancialmente similar a la sed de búsqueda y reemplazado! Él es un poco como esto:

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

La primera observación de la información original, utilice / sbin / ifconfig consulta 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 es 192.168.1.100.

La parte frontal de la IP que desea eliminar

[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

Siguiente es eliminar parte del seguimiento, a saber: 192.168.1.100 Bcast: Máscara 192.168.1.255: 255.255.255.0

La parte de la IP que se elimine más tarde

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

Multi-Edit

Un comando sed para borrar la tercera línea / etc / passwd para el final de los datos, y la fiesta reemplazar 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 la edición de múltiples puntos, la primera edición de las eliminaciones de comando / etc / passwd para los datos al final de la tercera línea, el segundo comando busca Bash reemplazados blueshell.

Directamente modificar el contenido del archivo (movimientos peligrosos)

sed puede modificar directamente el contenido del archivo, no utilice la tubería de mando o flujos de datos redirigir! Sin embargo, dado que esta acción será la de modificar directamente el archivo original, por lo que no acaba de tomar la configuración del sistema para probar! Seguimos usando el archivo descargado para probar regular_express.txt verlo!

Usar sed a cada extremo de la línea si está dentro de regular_express.txt. Se sustituye!

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

Usar sed directamente en la última fila de regular_express.txt "# Esto es una prueba."

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

Dado que el $ representa la última línea, y una nueva acción, por lo que el documento final para agregar "# Esta es una prueba!"

sed la opción "-i" para modificar directamente el contenido del archivo, lo cual es muy útil! Por ejemplo, si usted tiene un millón de líneas de los archivos que desea añadir alguna línea de texto 100, esta vez utilizando vim puede estar loco! Debido a que el archivo es demasiado grande! ¿Cómo hacer eso? Sed en el uso ah! A través de sed modificar directamente / reemplazar la función, ni siquiera utiliza vim para modificar!

Linux comando Daquan Linux comando Daquan