10 votos

Cómo eliminar las líneas de un archivo que no contienen dot?

Tengo un archivo que contiene los datos, incluidas las direcciones url. Pero hay varias líneas que no son direcciones url. ¿Cómo puedo eliminarlos usando Ubuntu comandos de terminal?

Aquí está el archivo de Ejemplo de referencia: Datos de la Muestra

com.blendtuts/S
°=
com.blengineering.www/:http
±=

Quiero tener la salida :

com.blendtuts/S
com.blengineering.www/:http

El extra no deseado líneas no tienen ningún punto. Por lo tanto, quiero quitar las líneas sin puntos

31voto

Zanna Puntos 502

Una manera de con sed

sed '/\./!d' file
  • /\./ de coincidencia literal de punto (se escapó con \ porque de lo contrario. coincide con cualquier carácter)
  • !d borrar todo excepto la coincidencia de patrón

Si desea editar el archivo en su lugar, agregue -i para el comando después de la prueba. (Usted puede también agregar .bak a la -i indicador sed -i.bak ... crear una copia de seguridad del archivo).

sed -i '/\./!d' file

26voto

Fl.pf. Puntos 346

Usted podría grep todo con un punto en un archivo nuevo:

grep "\."  file > newfile

De esa manera usted puede guardar el archivo antiguo.

10voto

KasiyA Puntos 10471

O mantener las líneas que contienen un punto,

sed -ni.bak '/\./p' infile

8voto

fedorqui Puntos 1246

Creo awk es que el último que falta para el partido:

$ awk -F\. 'NF>1' file
com.blendtuts/S
com.blengineering.www/:http

Esto establece el separador de campo para el punto. Entonces, es una cuestión de impresión de las líneas que tienen al menos dos campos: esto significa que por lo menos un punto se produce.

6voto

abligh Puntos 191

Usando perl:

perl -i -ne 'print if /\./' /path/to/file

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: