在进入 syslog 文件时删除 \r

Posted

技术标签:

【中文标题】在进入 syslog 文件时删除 \\r【英文标题】:removing \r as they go into syslog file在进入 syslog 文件时删除 \r 【发布时间】:2013-06-07 08:57:10 【问题描述】:

我正在编写一个可以在 Linux 和 Windows 上运行的应用程序。为了便于携带,换行被视为\r\n。这个应用程序正在记录一些有用的信息以进行调试。它是在 Linux 中记录信息的系统日志。打开 syslog 文件时,所有的 \r 字符都显示为 ^M。我发现在 syslog 文件上使用 dos2unix 会删除 ^M。但我想在 ^M 进入系统日志时删除它们。如果除了更改代码(使用#ifdefs)之外还有任何配置设置或任何其他解决方法,请有人提供。谢谢...

【问题讨论】:

【参考方案1】:

如果您不在 Windows 上,请不要写 \r。

您可以定义一个 NEWLINE 常量,如下所示:

#ifdef _WINDOWS
#define NEWLINE '\r\n'
#else
#define NEWLINE '\n'
#endif

并使用它。

请参阅here 了解更多信息。

【讨论】:

【参考方案2】:

在 Linux 中使用 Windows 新行不是“可移植的”。

应该更改代码,而不是在 Windows 或 Linux 中记录 \r 或 \n,在 syslog 中记录新行是不好的做法,因为“传统”记录格式用 \n 分隔文件.如果您有任何额外的 \n 工具读取文件将会中断。通常,新行分隔文件中不以“

如果您使用 rsyslog,您可以使用 drop-cc 去除消息中的控制字符。

【讨论】:

以上是关于在进入 syslog 文件时删除 \r的主要内容,如果未能解决你的问题,请参考以下文章

Linux文件删除

如何删除转发时间戳? OSE 版本 Syslog-NG

ubuntu如何以删除文件夹?

ubuntu删除文件和文件夹的rm命令

R:读取 csv 文件时删除页眉、页脚和零星的列标题

linux按指定时间删除文件和文件夹