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
davy.ai
Para capturar el texto deseado, se puede utilizar el siguiente comando:
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 buscarEsto generará como resultado
324.32
.