【发布时间】:2019-07-02 18:59:00
【问题描述】:
我有一个 1.5 GB 的 Windows 文本文件,其中一些行以 LF 结尾,大部分行以 CR+LF
结尾你能帮忙解决一下sed脚本吗
- 将所有 CR+LF 替换为 $|$
- 将所有LF替换为CR+LF
- 将所有 $|$ 替换为 CR+LF
我已尝试使用文本编辑器进行所有替换,但执行文件中的所有替换需要很长时间(1% 半小时)。我试过用fart替换它:
fart -c -B -b text.txt "\r\n" "$|$"
结果如下
replacement 0 occurence(s) in 0 file(s)..
【问题讨论】:
-
我的错误,我尝试使用文本编辑器进行所有替换,但执行文件中的所有替换需要很长时间(1% 半小时)。我试过用 Fart (fart-it.sourceforge.net) fart -c text.txt "CRLF" "$|$" 替换它,但找不到任何东西可以替换
-
除了 LF 之前的那些之外,文件中是否还有任何 CR?通常,当有一个 Windows 文件具有除 CR 之前的其他 LF 时,这些 LF 实际上并不表示一行的结尾。一个示例是从 Excel 导出的 CSV,其中
beg,"foo\nbar",end\r\n表示单行,其中一个单元格在引号内包含\n。那么您确定要将所有独立的 LF 视为代表行尾吗? -
该文件只是从数据库中提取的数据。大多数行都有正常的 CR+LF 结尾。但是有些内容因初始损坏的内容(附加 LF)而中断,它将正常的 CR+LF 转移到新行并将一行分成两行。任务是将提取的数据移回数据库,这就是出现问题的原因。如果没有额外的操作,初始行数和上传到数据库的行数将不匹配。
标签: windows text sed character-replacement