【问题标题】:How to remove hidden newline or carriage return character in vim如何在vim中删除隐藏的换行符或回车符
【发布时间】:2021-08-08 02:57:11
【问题描述】:

我在 macOS 上有一个由 Windows 创建的 CSV 文件,如下所示:

"C00115940","","","","","O","","","f","","b",NULL,"92583","","123-456-7890","","","","","","M","W","","","","jc@abc.def","","","","C","5","","S",NULL,"92583","","951","","","m@s.gov","","","","","","","","","",NULL,NULL,"",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"",NULL,NULL,"",NULL,NULL,"",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"",NULL,NULL,"",""," ","1","",NULL,"","","","","",NULL,"","75350","","","",NULL,"","","","","","","","","","",""¬
"C00102747","","","","","R","","","3","","A",NULL,"12207","","5","","","","","","S","D","","","","t@abc.def","","","","R","35 Any St¬
3rd Fl","","A",NULL,"12207","","5","","","S@r.org","","","","","","","","","",NULL,NULL,"",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"",NULL,NULL,"",NULL,NULL,"",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"",NULL,NULL,"",""," T","1","",NULL,"","","","","",NULL,"","75350","","","",NULL,"","","","","","","","","","",""¬

在 vim 中,我启用了 :set list,因此您可以看到 ¬ 换行符所在的位置。

在第二行中,我需要删除的一个字段中间有一个换行符。每行应始终以双引号结尾。如果我执行/[^"]$,例如,我可以在第二行看到,其中换行符位于地址字段内("35 Any St¬ 3rd Fl"

我已经尝试过:%s/\([^"]\)$/\1/g,但没有任何作用。

我可以运行更好的替换命令来删除这些错误的换行符,但不会删除其他任何换行符吗?

【问题讨论】:

    标签: vim


    【解决方案1】:

    你已经接近了!您可以使用\n 匹配vim 搜索命令中的新行,所以 您可以使用以下方法突出显示有问题的行:

    /[^"]\n
    

    你可以像这样加入他们:

    :%s/\([^"]\)\n/\1/g
    

    或者以更优雅的方式使用全局命令:

    :g/[^"]\n/join
    

    或等效:

    :g/[^"]\n/normal J
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2010-10-14
      • 1970-01-01
      • 2013-04-15
      相关资源
      最近更新 更多