【问题标题】:How to replace \r\n (literal) with \n using FART.exe如何使用 FART.exe 将 \r\n(文字)替换为 \n
【发布时间】:2016-03-28 17:24:40
【问题描述】:

我有一个用于在 SQL Server 2008 中批量加载的 xml 格式文件。我需要将 TERMINATOR="\r\n" 的实例替换为 TERMINATOR="\n"。我正在尝试使用命令行实用程序FART.exe。无论我如何尝试,我似乎都无法让实用程序识别字符。

我尝试将查找字符串作为组合传递并替换字符串:

\r\n \n
"\r\n" "\n"
""\r\n"" ""\n""
^\r^\n ^\n
TERMINATOR=""\r\n"" TERMINATOR=""\n""
TERMINATOR=""^\r^\n"" TERMINATOR=""^\n""

还有很多很多的组合。我查找的每篇关于转义DOS 命令的文章都告诉我一些不同的事情,我都尝试过,但都没有运气。真正奇怪的是,使用 \r\n \n 不仅没有做我想做的事情(替换文字),而且它没有替换文件中每一行末尾的回车 + 换行符。

我需要编辑的格式文件。我认为我用红色下划线的那行引起了问题:

调用 Jrepl 的命令窗口输出。很明显,该实用程序在另一个屏幕截图中的红色下划线行存在问题:

【问题讨论】:

    标签: replace grep windows-console


    【解决方案1】:

    要将所有 \r\n 文字替换为 \n,只需使用:

    fart yourFile.xml \r\n \n
    

    只替换较大的字符串TERMINATOR="\r\n",然后使用:

    fart -C yourfile.xml TERMINATOR=\x22\\r\\n\x22 TERMINATOR=\x22\\n\x22
    

    我更喜欢使用JREPL.BAT - 它比FART 更强大,因为它可以使用正则表达式,而且它还有许多额外的高级功能。与 FART 相关的唯一限制是一次只能处理一个文件。

    \n 替换所有\r\n 文字:

    jrepl \r\n \n /l /f yourFile.xml /o -
    

    更具体地说,使用文字搜索字符串,引号转义为\q,反斜杠转义为\\

    jrepl "TERMINATOR=\q\\r\\n\q" "TERMINATOR=\q\\n\q" /x /l /f yourFile.xml /o -
    

    或使用正则表达式:

    jrepl "(TERMINATOR=\q)\\r(?=\\n\q)" "$1" /x /f yourFile.xml /o -
    

    【讨论】:

    • 嗨德本汉姆。不幸的是,我尝试的第一件事是“放屁 yourFile.xml \r\n \n”,但它没有用。我得到结果“在 0 个文件中替换了 0 次出现。我一次只需要在一个文件中查找和替换,所以我想我现在会尝试使用你的 jrepl 命令行实用程序。感谢帮助!
    • @Ognennyy - 嗯。这很奇怪,因为我用 FART 进行了测试,它似乎对我有用。但祝 JREPL 好运
    • 我在上面贴了两张截图,希望对您有所帮助。如果我只创建一个包含一行的文本文件 (Terminator="\r\n") 然后调用 jrepl \r\n \n /l /f "test.txt" /o "test_new.txt",它可以工作正确并用 (Terminator="\n") 替换它。但是,我似乎 Jrepl 不喜欢我的 xml 文件。看看我的截图。我在 xml 文件中突出显示的行包含两个链接。当我将输出发送到 stdout 时,cmd 窗口的另一个屏幕截图清楚地表明它存在问题。你觉得@dbenham 怎么样? Jrepl 不能处理完整的 xml 文件吗?
    • 忘了提及...我认为问题与 。二是方形
    • @Ognennyy - JREPL 旨在处理 ANSI(扩展 ASCII)编码文件。我的猜测是您的 XML 文件被编码为某种形式的 Unicode(UTF-8 以外的东西)。这也可以解释为什么 FART 不适合你。
    【解决方案2】:

    最简单最快的是放屁二进制法,例如:

    fart.exe -C D:\sample.txt \x0d\x0a \x0a
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 2011-06-16
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多