【问题标题】:Replacing Invalid CSV End of Line in Linux在 Linux 中替换无效的 CSV 行尾
【发布时间】:2016-04-28 20:26:01
【问题描述】:

在 CSV 文档中找到所有无效 \r\\n 并使用 linux 终端替换为有效 \r\n 的最佳方法是什么?

根据我的研究,我遇到了:

sed 's/\r$//'

不幸的是,我不懂语法,也不确定这是否能奏效。

任何帮助将不胜感激。

【问题讨论】:

  • 'invalid \r\n'和'valid \r\n'有什么区别?!无论如何,该正则表达式会将\r\n 转换为\n,但只有第一个。添加/g。或者更好:只需使用dos2unix
  • 我很抱歉。角色从视野中逃脱。我已经更新了:-)
  • 文件是否包含回车-反斜线-换行符?!
  • 所以你的文件看起来像 line 1^M\nline 2^M\nline 3^M\n ?请注意,这些 "\n" 实际上只是文字 \n 而不是换行符。
  • 是的@比芬。另外,我已经从问题中删除了引号以避免混淆。谢谢:-)

标签: regex linux ubuntu sed terminal


【解决方案1】:
sed 's/\r\\$/\r/g'

应该这样做。 IE。将每行末尾的 CR,\ 替换为 CR。

注意/g。没有它sed 只会替换 first 匹配项。

sed 不会(通常)“看到”LF,因为它正在对行应用正则表达式行。 $ 因此表示 LF 所在的点。

【讨论】:

  • 如果文件确实有\r\\n,那么它将是一长行,因为在n 之前的\ 被转义,这意味着这不起作用。
  • @123 我把 OP 对这个问题的最新评论表示它是 CR、反斜杠、LF。
猜你喜欢
  • 2017-06-24
  • 2010-09-10
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多