Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

341
Vistas
¿Cómo eliminar una línea si una línea contiene un valor vacío después del símbolo = usando powershell o Javascript?

¿Cómo eliminar una línea si una línea contiene un valor vacío después del símbolo = usando powershell o Javascript?

Mi valor de entrada es

 variable1 = value1 variable2 = value2 variable3 = variable4 = value4 variable5 =

los valores pueden cambiar. Estoy buscando un script que elimine líneas si el valor está vacío después del símbolo =.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Parece que está tratando de modificar un archivo .INI y, al hacerlo, puede arruinar la inicialización de algunas aplicaciones.

Habiendo dicho eso, en PowerShell puedes hacer:

  1. al cargar desde un archivo de texto
 $result = Get-Content -Path 'X:\theInputFile.txt' | Where-Object { $_ -match '^\w+\s*=\s*\S+' }
  1. al analizar una cadena multilínea
 $string = @' variable1 = value1 variable2 = value2 variable3 = variable4 = value4 variable5 = '@ $result = $string -split '\r?\n' | Where-Object { $_ -match '^\w+\s*=\s*\S+' }

La variable $result será una matriz de cadenas:

 variable1 = value1 variable2 = value2 variable4 = value4

Puede guardar eso en (un nuevo) archivo usando

 $result | Set-Content -Path 'X:\theNewInputFile.txt'

Detalles de expresiones regulares:

 ^ Assert position at the beginning of the string \w Match a single character that is a “word character” (letters, digits, etc.) + Between one and unlimited times, as many times as possible, giving back as needed (greedy) \s Match a single character that is a “whitespace character” (spaces, tabs, line breaks, etc.) * Between zero and unlimited times, as many times as possible, giving back as needed (greedy) = Match the character “=” literally \s Match a single character that is a “whitespace character” (spaces, tabs, line breaks, etc.) * Between zero and unlimited times, as many times as possible, giving back as needed (greedy) \S Match a single character that is a “non-whitespace character” + Between one and unlimited times, as many times as possible, giving back as needed (greedy)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Para complementar la útil respuesta de Theo , que utiliza un enfoque basado en cmdlet de transmisión, con un enfoque de operador (puro), que es más rápido, pero requiere más memoria (el uso de la memoria generalmente no es una preocupación con los archivos de texto):

Como señala zett42 , los operadores de comparación como -match actúan como filtros si el operando LHS (entrada) es una matriz , por lo que puede hacer coincidir una expresión regular directamente con una matriz de líneas para obtener la sub-matriz de líneas coincidentes:

 # Filter the lines of file inputFile.txt by returning only those on which # "=" is followed by at least one non-whitespace character ("\S"), # optionally preceded by any number of other characters (".*"). @(Get-Content inputFile.txt) -match '=.*\S'

Puede acelerar la llamada Get-Content agregando -ReadCount 0 .

En cuanto a cuándo usar un enfoque de transmisión frente a un operador puro: consulte la sección sobre compensaciones en esta respuesta .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda