清理包含各种 CR 和 LF 换行符的文本文件

清理包含各种 CR 和 LF 换行符的文本文件

我正在尝试将包含备忘录的文本文件导入 mySQL。我不知道他们是如何做到这一点的,但是虽然备忘录字段始终以 CR LF 结尾,但文本本身的部分内容也包含 CR、LF 和 CR LF 换行符的混合。

这自然会破坏我的导入能力,因为没有明确的迹象表明什么构成了换行符。大约一半的数据在导入过程中丢失,而 25% 的数据最终被截断。

有什么可行的方法可以解决这一问题?它最初是从 Access 导出的。

谢谢!

答案1

如果正确的 CR+LF 位于 Memo 字段周围的单引号之外,则以下后视应该可以匹配要删除的 CR+LF:

(?<!')\r\n

正则表达式可视化

在 Debuggex 上实时编辑

原始答案:

您可以在文本文件上运行正则表达式吗?

\r\n?|\n

用您想要的换行符替换每个匹配项,例如\r\n

答案2

根据您想要保留的内容(CR-LF 或 LF),您可以使用unix2dos/dos2unix样式实用程序可以将导入的文件从 CR-LF 转换并清理为 LF 或反之亦然,以使其始终保持一致。

如果你使用的是 Unix/Linux 平台,那么你应该可以使用 dos2unix 和 unix2dos 命令。
如果你使用的是 Windows 并且没有赛格威(或同等的),你可以尝试托弗罗多斯

答案3

如果数据本身包含 CR LF,并且它们没有用某种限定符(例如“”)括起来,那么显然这些行将被分成多行。最好的办法是清理 Access 中的数据并再次导出。如果 CR LF 符合条件,那么您应该能够操作文件(我可能会使用 AWK)并用 \n 替换不合格的 CR LF。

为了更加精确,我需要了解更多有关数据的信息。

相关内容