Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

338
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda