Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

378
Views
Eliminar una línea en un archivo txt con Node.js

Recientemente hice un script en el que quiero eliminar una coincidencia EXACTA de un archivo txt con node. Imprime verdadero pero en realidad no elimina la línea del archivo txt. Estoy usando discord para obtener el argumento. No estoy seguro de lo que estoy haciendo mal, pero aquí está mi script:

 const fs = require('fs') fs.readFile('notredeemed.txt', function (err, data) { if (err) throw err; if (data.toString().match(new RegExp(`^${args[0]}$`, "m"))) { fs.readFile('notredeemed.txt', 'utf8', function (err,data) { if (err) { return console.log(err); } var result = data.replace(/${args[0]/g, ''); fs.writeFile('notredeemed.txt', result, 'utf8', function (err) { if (err) return console.log(err); }); }); console.log("true")

Si alguien pudiera ayudarme se lo agradecería :)

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Creo que puede hacerlo de manera muy similar a su solución actual, solo que la expresión regular está un poco apagada.

En lugar de solo usar ^ y $ para indicar que toda la cadena comienza y termina con args[0] , usé dos grupos de captura como delimitadores de una línea.

Este coincide con cualquier carácter de nueva línea o el comienzo de la cadena. Funciona para la primera línea del archivo y evita el reemplazo parcial, por ejemplo, llo reemplaza Hello :

 (\n|^)

Y este coincide con un retorno de carro o el final de la cadena. Esto funciona para los casos en los que no hay una nueva línea al final del archivo y también evita que Hel reemplace a Hello :

 (\r|$)

Eso debería garantizar que siempre esté eliminando una línea completa que coincida con sus argumentos.

También eliminé el segundo readFile ya que no era necesario para que funcionara.

 const fs = require("fs") fs.readFile("notredeemed.txt", function (err, data) { if (err) throw err const match = new RegExp(`(\n|^)${args[0]}(\r|$)`) const newFile = data.toString().replace(match, ``) fs.writeFile("notredeemed.txt", newFile, "utf8", function (err) { if (err) return console.log(err) console.log("true") }) })
about 4 years ago · Juan Pablo Isaza Report

0

Aquí está mi solución.

Algoritmo:

  1. Divida el contenido del archivo en líneas individuales con el indicador de fin de línea deseado (generalmente "\n" o "\r\n" )
  2. Filtra todas las líneas que quieras eliminar
  3. Vuelva a unir todas las líneas filtradas con la bandera EOL

 const replacingLine = "- C/C++ addons with Node-API"; const fileContent = `- V8 - WASI - C++ addons - C/C++ addons with Node-API - C++ embedder API - C/C++ addons with Node-API - Corepack`; const newFileContent = replace({ fileContent, replacingLine }); console.log(newFileContent); function replace({ fileContent, replacingLine, endOfLineFlag = "\n" }) { return fileContent .split(endOfLineFlag) .filter((line) => line !== replacingLine) .join(endOfLineFlag); }

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!