gpt4 book ai didi

java - 如何格式化和比较来自 bash/vm 的输入?

转载 作者:行者123 更新时间:2023-12-02 04:46:58 28 4
gpt4 key购买 nike

我正在开发一个桌面应用程序,它将分析虚拟机上的一些内容。在 SSH 连接后我可以进行写入和读取。我将输入保存在临时 .txt 文件中。现在我想将它与另一个包含正确目录数量/名称的 .txt 文件进行比较。例如,如果我想使用 scanForVm 中的以下代码检查 ../workspace/ 上的目录。内容(实际上不仅仅是命令输出)保存到 .txt 文件中。

我遇到的问题是它写入了一些不必要的内容,并且我无法将其与其他 .txt 文件进行比较。

我花了几个小时试图寻找答案,并尝试了不同的方法。

public void scanForVm(MouseEvent event) throws IOException, InterruptedException {
if (event.getSource() == scanButton) {

networkCheck.scanNetwork();
sshConnection.connectionToSsh("ls -d workspace/*/\n");
sshConnection.readOutput();
}

}

然后:

public void readOutput() throws IOException, InterruptedException {

Path file = Paths.get(" / path / To / Text.txt ");

System.out.println(outputDescr); //Debug format
InputStream stdout = new StreamGobbler(sess.getStdout());
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int read;
String output = "";

while ((read = stdout.read(buffer)) != -1) {
result.write(buffer, 0, read);
Files.write(file, buffer);
Thread.sleep(2000);
System.out.println(output);
}
}

我希望来自虚拟机的输入是实际可读的。

现在我明白了:

添加身份:

/path/path/path/.ssh/...
[0m[01;36mworkspace/directory/[0m [01;36mworkspace/directory2/[0m
ls -d workspace/*/

我希望它只是:

workspace/directory/
workspace/directory2/

最佳答案

[0m[01;36m 是颜色标识符。 [0m 表示无颜色,[01;36m 表示浅青色。可以使用像 \[(0|\d+;\d+)m 这样的正则表达式来解析它们。

在您的具体示例中,所有从将颜色设置为浅青色并最终返回标准的所有内容都可以使用 \[01;36m(.+?)\[0m 找到包含所需字符串的组 1。您可以在这里测试:https://regex101.com/r/A906Na/1

关于java - 如何格式化和比较来自 bash/vm 的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475072/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com