es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener el texto después de un salto de línea en un archivo de texto sin espacios ni tabulaciones

Suponga lo siguiente: Se necesita pasar un nombre de archivo como argumento.

Este es el único texto que se muestra. El texto restante tiene más datos (no se muestran). El problema: El texto está medio limpio, lleno de espacios en blanco, tabulaciones, Unicode, no está limpio y tiene que ser así (según mis necesidades), por lo que copiar/pegar este texto exacto no funciona (formateado por el marcado):

Tengo algo de texto así:


--- más texto con espacios y tabulaciones --- 1 Algo aquí y algo más, 2000 edf, 60 pop Usd324.32 2 Usd534.22 2 21st Nuevo texto que me gustaría seleccionar con un patrón, 334 pop Usd162.14 --- más texto con espacios y tabulaciones,unicode ---

Estoy tratando de capturar este texto explícito:
1 Algo aquí y algo más, 2000 edf, 60 pop Usd324.32

Debido al salto de línea y espacio en blanco, el siguiente comando solo captura 1:

grep -E '1\s.+'

Además, he estado intentando hacerlo con nuevas concatenaciones:

grep -E '1\s|[A-Z].+'

Pero no funciona. grep comienza a seleccionar un patrón similar en diferentes partes del texto:

awk '{$1=$1}1'   #ya se hizo
tr -s "\t\r\n\v" #ya se hizo
tr -d "\t\b\r"   #ya se hizo

¿Cómo puedo capturar:
– capturar un salto de línea
– capturar toda la segunda línea después de un salto de línea
– capturar el número $Usd324.34 y eliminar Usd

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para capturar el texto deseado, se puede utilizar el siguiente comando:

    grep -oP '1\s.*\$Usd\K\d+\.\d+' <nombre de="" archivo="">
    

    Explicación:
    grep se utiliza para buscar patrones en un archivo
    – La opción -o se utiliza para mostrar solamente el patrón coincidente, sin la línea completa
    – La opción -P se utiliza para habilitar las expresiones regulares de Perl
    1\s.*\$Usd\K coincide con la línea entera que contiene ‘1’, y la opción \K se utiliza para excluir la parte ‘Usd’ del patrón coincidente
    \d+\.\d+ coincide con la cantidad en dólares de la línea
    <nombre de="" archivo=""> es el nombre del archivo que se desea buscar

    Esto generará como resultado 324.32.

Comments are closed.