SED Linux aplicación para borrar la línea en blanco

A, Presentación editor de sed

editor de SED se conoce como editor de flujo (editor de flujo), y normal editor de texto interactivo contrario. En un editor de texto interactivo (como vim), puede utilizar los comandos del teclado de forma interactiva insertar, eliminar o reemplazar los datos de texto. editor de flujo para editar el flujo de datos se basa en un conjunto de normas establecidas de antemano antes de procesar el editor de datos.
editor sed pueden procesar el flujo de datos de acuerdo con los comandos que se introducen ya sea desde el texto de la línea de comando o comandos almacenados en un archivo (es decir, un archivo de script). realiza editor sed las siguientes acciones:

  • leer datos de forma secuencial a partir de la línea de entrada
  • Los comandos del editor emparejan datos facilitados
  • Los datos del flujo con el fin de modificar
  • La salida de los nuevos datos de entrada a STDOUT

Después de que se complete todo el editor de flujo de comandos para que coincida con una línea de datos, se lee los datos de la línea siguiente y repita el proceso hasta que todos los datos han sido procesados terminado.
Formato de comando sed es el siguiente

sed archivo de script opciones

Dos líneas en blanco, sed de borrado

Descripción : Antes de utilizar el supuesto de que el lector tiene un conocimiento básico de regular, si no, en su propio aprendizaje

1. Eliminar líneas en blanco consecutivos

Si usted tiene un número variable de línea en blanco entre cada línea de nuestro texto, leer algún esfuerzo, no es bello, queremos un intervalo fijo entre cada línea, como la separación de líneas es sólo una línea en blanco, se puede utilizar el siguiente script:

/./, / ^ $ /! D

Intervalo /./ a / ^ $ / coincidirá con cualquier boicot del inicio de la final de la dirección contiene al menos una línea de carácter, el intervalo coincidirá con una línea en blanco, no se eliminará la línea en este rango.
Ejemplos

~$ cat example1
Such stories set us thinking, 

wondering what we should do under similar circumstances. 


What events, what experiences, 

what associations should we crowd into those last hours as mortal beings, 


what regrets?
~$ sed '/./,/^$/!d' example1
Such stories set us thinking, 

wondering what we should do under similar circumstances. 

What events, what experiences, 

what associations should we crowd into those last hours as mortal beings, 

what regrets?
~$

La línea en blanco irregular original se convierte en uniforme. El ejemplo Ningún contenido después de la última fila, a continuación, después de la última línea de texto si hay una línea en blanco, una línea de tratamiento para una línea en blanco.

2. Quitar líneas en blanco al comienzo de

Si un trozo de texto al principio de filas múltiples en blanco al parecer, leerá las molestias. Eliminar líneas en blanco al comienzo del pensamiento es bastante similar a la anterior, podemos usar el siguiente script:

/./, $! D

Esta secuencia de comandos tendrá que empezar desde la línea de caracteres, hasta el final, se eliminará dicho rango de un contenido, es decir, antes de que oficialmente se borran los contenidos de la primera fila en blanco.
Ejemplos

~$ cat example2



Such stories set us thinking, 

wondering what we should do under similar circumstances. 
What events, what experiences, 
what associations should we crowd into those last hours as mortal beings, 
what regrets?
~$ sed '/./, $!d' example2
Such stories set us thinking, 

wondering what we should do under similar circumstances. 
What events, what experiences, 
what associations should we crowd into those last hours as mortal beings, 
what regrets?
~$

3. Retirar arrastra líneas en blanco

En líneas en blanco consecutivos de borrado que hemos mencionado, el procesamiento de la última línea contiene una línea en blanco de línea, tal vez este no es el resultado que queremos, queremos que la última línea no contiene una línea en blanco, se puede utilizar la siguiente secuencia de comandos:

sed '{
: Inicio
/ ^ \ n * el $ / $ {d; N; b Inicio}
}'

este script puede parecer un poco complicado, entre llaves normales script también corsé, que le permite comandar todo el guión algunos en el paquete de órdenes, el paquete de órdenes se aplica a la dirección especificada. Aquí se utiliza rama etiqueta B, el salto se puede lograr, como el idioma ciclo C. La implicación es que si encuentra una línea que tiene un solo salto de línea, sino también la última línea, a continuación, eliminar, de lo contrario continuará el próximo partido.
Ejemplos

~$ cat example3
Such stories set us thinking, 

wondering what we should do under similar circumstances. 

What events, what experiences, 
what associations should we crowd into those last hours as mortal beings, 
what regrets?

~$ sed '{
:start
/^\n*$/{$d; N; b start}
}' example3
Such stories set us thinking, 

wondering what we should do under similar circumstances. 

What events, what experiences, 
what associations should we crowd into those last hours as mortal beings, 
what regrets?
~$

4. Quitar las etiquetas HTML

Vamos a utilizar la línea de comandos para obtener una gran cantidad de información sobre algunas páginas, que contiene una gran cantidad de información de la etiqueta html no es propicio para el mensaje principal de los conseguimos, tenemos que tener formato de texto plano, se puede utilizar la siguiente secuencia de comandos:

s / <[^>] *> // g; / ^ $ / D
** Ejemplos **
~$ cat example4
<html>
<head>
<title>This is the page</title>
</head>
<body>
<p>
This is the first line in the web page
This should provide some useful
information to use in our sed script
</p>
</body>
</html>
~$ sed -e 's/<[^>]*>//g ; /^$/d' data.txt
This is the page
This is the first line in the web page
This should provide some useful
information to use in our sed script
~$

Descripción : El contenido de cada línea ejemplo4 inmediatamente después de los saltos de línea, no contiene ningún espacio o ficha, los lectores pueden tratar, detrás de unas etiquetas para añadir un poco de espacio o tabulación, el contenido resultante será diferente.

Prestamos atención dará cuenta de que todo el contenido que aquí están cinco guión, pero nuestra estructura HTML estándar por lo general contiene varias relaciones guiones, como el siguiente ejemplo

~$ cat example5
<html>
	<head>
		<title>This is the page</title>
	</head>
		<body>
		<p>
		This is the first line in the web page
		This should provide some useful
		information to use in our sed script
		</p>
	</body>
</html>
~$ sed -e 's/<[^>]*>//g ; /^$/d' example5
	
		This is the page
	
		
		
		This is the first line in the web page
		This should provide some useful
		information to use in our sed script
		
	
~$

Las etiquetas se eliminan, sino una línea en blanco, pero las hay por supuesto, y por qué? Vamos a guardar la salida, y luego usar el gato -t vistazo al interior de un contenido específico:

~$ sed -e 's/<[^>]*>//g ; /^$/d' data.txt > test
~$ cat -t test 
^I
^I^IThis is the page
^I
^I^I
^I^I
^I^IThis is the first line in the web page
^I^IThis should provide some useful
^I^Iinformation to use in our sed script
^I^I
^I
~$

Se puede ver, el texto de cada línea en blanco es en realidad hay un carácter no imprimible ^ I , lo que representa un TAB, fue ejecutado en el partido / ^ $ / d , los dos no coinciden, líneas en blanco de modo de borrado operaciones no realizadas. Por lo tanto, es necesario modificar las reglas:

s / <[^>] *> // g; / ^ [[: Space:]] * $ / d
La diferencia es que la coincidencia de línea en blanco intermedio aumentó [[: Espacio]] * [[: Espacio]] representa los caracteres de espacio en blanco, incluyendo espacios, tabulaciones, NL, FF, VT y CR. Aplicación de los resultados es como sigue:
~$ sed -e 's/<[^>]*>//g ; /^[[:space:]]*$/d' example5
		This is the page
		This is the first line in the web page
		This should provide some useful
		information to use in our sed script
~$

Se puede ver, eliminar filas vacías encima, pero entonces no hay ninguna parte de la distancia entre cada fila, por lo que podemos hacer frente a esa parte en blanco de nuevo se borrará sobre la base de lo anterior, las reglas modificadas son las siguientes

s / <[^>] *> // g; / ^ [[: Space:]] * $ / d; s / ^ [[: space:]] * $ // g
Comenzamos cada línea de espacio o de reemplazo correspondiente TAB, a fin de lograr eliminado:
~$ sed -e 's/<[^>]*>//g ; /^[[:space:]]*$/d; s/^[[:space:]]*//g' example5
This is the page
This is the first line in the web page
This should provide some useful
information to use in our sed script
~$

Ahora bien, el efecto es mucho mejor, puede redirigir la salida al archivo especificado.

Publicado 25 artículos originales · ganado elogios 23 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/Secur17y/article/details/100895144
Recomendado
Clasificación