Fart.exe连续替换两个回车符

时间:2017-09-01 17:26:44

标签: csv batch-file replace cmd fart

我有csv文件,我正在尝试使用Fart.exe将一个回车连续替换为两个回车符。首先,这可能吗?如果是这样,CSV中的文本布局如下所示,其中“CRLF”是实际的回车。

,CRLF
CRLF

但是我希望它在没有第二行的额外回车的情况下就是这样:

,CRLF

我以为我可以在下面做,但它不会起作用:

CALL "C:\tmp\fart.exe" -C "C:\tmp\myfile.csv" ,\r\n\r\n ,\r\n

我需要知道要更改,\ r \ n \ r \ n 的内容才能使其正常工作。任何想法我怎么能做到这一点?谢谢!

1 个答案:

答案 0 :(得分:2)

正如Squashman建议的那样,你只是想删除空行。

不需要第三方工具来执行此操作。您只需使用FINDSTR来丢弃空行:

findstr /v "^$" myFile.txt >myFile.txt.new
move /y myFile.txt.new *. >nul

但是,只有当所有行都以CRLF结尾时,这才有效。如果你有一个unix格式的文件,用LF结束每一行,那么它将不起作用。

更强大的选择是使用JREPL.BAT - a regular expression command line text processing utility

jrepl "^$" "" /r 0 /f myFile.txt /o -

如果将命令放在批处理脚本中,请务必使用CALL JREPL。

FART一次处理一行,而CRLF不被视为该行的一部分。因此,您无法使用普通FART命令删除CRLF。如果您确实想使用FART,则需要使用-B二进制模式。您还需要使用-C来获得对转义序列的支持。

我从未使用过FART,所以我无法确定 - 但我相信以下内容会有效

call fart -B -C myFile.txt "\r\n\r\n" "\r\n"

如果您有许多连续的空行,则需要重复运行FART命令,直到不再有更改为止。