Как автоматически go просматривать и редактировать длинные текстовые файлы? - PullRequest
0 голосов
/ 01 августа 2020

У меня проблема: у меня есть журналы чата, состоящие из тысяч строк, и я пытаюсь изолировать сообщения от одного конкретного c пользователя. Журнал выглядит так:

[dd-mm-yy hh:mm pm/am] Username
message


[dd-mm-yy hh:mm pm/am] Username
message


[dd-mm-yy hh:mm pm/am] Username
message

В моем файле я хочу хранить только те сообщения (а не другую информацию, например, дневной час или их имя пользователя), которые отправил один c пользователь, и удалить все остальное, чтобы я мог обработать содержимое этих сообщений. Есть ли что-нибудь, что может помочь мне достичь этого, потому что, как вы можете видеть, это очень утомительный процесс go через тысячи строк журналов, выполняемый вручную.

1 Ответ

0 голосов
/ 02 августа 2020

Я закончил тем, что написал js скрипт, чтобы делать то, что я хотел, так как я не мог найти ничего больше нигде, вот он:

const fs = require("fs");
const readline = require("readline");

async function processLineByLine() {
    const fileStream = fs.createReadStream("./input.txt");

    const rl = readline.createInterface({
        input: fileStream,
        crlfDelay: Infinity,
    });
    // Note: we use the crlfDelay option to recognize all instances of CR LF
    // ('\r\n') in input.txt as a single line break.

    let trigger = false;

    for await (const line of rl) {
        // Each line in input.txt will be successively available here as `line`.
        console.log(`Line from file: ${line}`);
        if (line.includes("YOU DID THIS TO MY BOI LIM#7483") == true) {
            console.log("true");
            trigger = true;
        }
        else if (trigger == true) {
            console.log(`Line sent by user: ${line}`);

            fs.appendFile("output.txt", line + " ", (err) => {
                // throws an error, you could also catch it here
                if (err) throw err;

                // success case, the file was saved
                console.log("line saved");
            });

            trigger = false;
        }
    }
}

processLineByLine();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...