如何通过删除非法字符来格式化java shell输出流

时间:2015-10-12 06:34:38

标签: java shell

我使用Java创建了shell会话。使用K我正在输入命令并使用中的' ' ,' 频道'我正在获取shell输出。我在获取shell输出时遇到问题。如下所示,输出包含几个特殊字符的ascii值。 请告诉我如何格式化字符串Obtained。

我已经获得了样本输出。

获得的输出

  

1.68(B [m [39; 49m [K任务:(B [m [39; 49m(B [m 274(B [m [39; 49 mtotal,(B [m [39; 49m(B [m] 1(B [m [39; 49mrunning ..

我正在使用的代码在这里:

public static void printOutput(InputStream in,Channel channel) {
String output= "";
try {

    byte[] tmp=new byte[1024];
    while(in.available()>0){
        int i=in.read(tmp, 0, 1024);
        if(i<0){break;}
        output += new String(tmp, 0, i);
     }
    System.out.println("Inside print output");
    System.out.println(output);
} catch (Exception e) {
    System.out.println(e+"\n");
    e.printStackTrace();
} 

OutputStream os = channel.getOutputStream();
in = channel.getInputStream();
channel.connect();
os.write((command +"\n").getBytes());
os.flush();
printOutput(in,channel);

1 个答案:

答案 0 :(得分:0)

将所有特殊字符替换为空字符串

 output.replaceAll("[^\\w]", "");

下面是结果。 如果不是你的,你可以更新正则表达式,选择你想要替换的空格,例如:[([;,.: ]

168Bm3949mKTasksBm3949mBm274Bm3949mtotalBm3949mBm1Bm3949mrunning