【问题标题】:How to avoid Carriage Return Line feed pair如何避免回车换行进给对
【发布时间】:2011-06-20 11:31:42
【问题描述】:

我正在使用以下命令从 Android 手机中提取调试跟踪(二进制形式):

adb logcat -B > input.bin

然后我将这个二进制数据(input.bin)提供给解析它的 python 脚本。

我面临的问题是在 input.bin 中:

0A(换行) 被 0D0A(CR and LF) 替换,当在 Linux shell 中发出上述命令时。

0A(line feed) 被 0D0D0A 替换,当在 Windows 命令提示符下发出上述命令时。

我不想要这种行为。

我试图通过将 onlcr 更改为 -onlcr 来更改终端的设置,但没有成功。

谁在做这些改变??? 如何避免它们????

【问题讨论】:

    标签: android linux terminal cmd


    【解决方案1】:

    问题是 Linux 仅使用 LF 作为换行符(\r),而 Windows 使用(\r\n)作为换行符作为换行符和回车符。这是命令提示符下的默认行为,因此我认为您应该采用更复杂但通用的方式,即使用 Java 程序从该命令中获取输出,并通过 Writer 类而不是输出流将数据写入文件。

    Process exec = Runtime.getRuntime().exec("adb logcat -B");

    BufferedWriter buffWriter = new BufferedWriter(new FileWriter("FileName"));

    BufferedReader buffReader = new BufferedReader(new InputStreamReader(exec.getInputStream()));

    buffWriter.write(buffReader.readLine());

    现在两个操作系统的输出文件相同。

    【讨论】:

    • 对不起,我对 Python 没有任何想法。对不起朋友
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2022-12-05
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多