这让我疯了一会儿。实际上,让那个该死的夜晚!
我有一个联系信息文件,现在只是稍微破坏了我正在尝试修复VIM。该文件有13k行,所以我真的,真的不想在文件中手动修复它。我相信我遇到的最后一个问题是,由于某些愚蠢的原因,许多行与下一行一起运行。这是一个csv文件,其中换行符分隔行。不幸的是,可能有几百行,其中有一行换行符应该是两行。
以下是发生这种情况的文件示例:
Freddy,Bauhof,fabaof@garbage.net,16126 Garbage Drive,Spring,TX,77 379,5555550440,M,1/1/14,14:23:57,256.241.24.29^@
Natasha,Moore,ndivy@garbage.com,3715 Garbage Rd,Louisville,KY,40218,5555553358,F,1/1/14,3:12:09,74.256.182.12^@MaryAnn,Haase,mahase@garbage.net,303 N Garbage Rd,Norfolk,NE,68701,5555559031,M,12/31/13,7:20:21,69.256.211.147^@
Jonathan,Golden,jongolden@garbage.com,11 Garbage Dr,GlenHead,NY,115 45,5555556712,M,1/1/14,17:28:09,256.195.83.118^@
我要做的只是插入换行符/ carraige返回/在“12 ^ @”之后和“MaryAnn”之前实际将中间行分成两行的任何内容。在此先感谢您的帮助。
答案 0 :(得分:1)
在vim :%s/\^@\(\S\)/^@\r\1/g
中运行此功能。
它在^@
和之间插入回车符。
Foo^@
Bar^@Baz^@
Qux^@
变为
Foo^@
Bar^@
Baz^@
Qux^@
答案 1 :(得分:1)
vim :
这条线可行:
%s/\^@\zs\ze\S/\r/g
如果你对shell开放, grep 可以帮助你:
kent$ cat f
foo^@
foo2^@bar^@baz^@
blah^@
kent$ grep -oP '.*?\^@' f
foo^@
foo2^@
bar^@
baz^@
blah^@
sed :
kent$ sed -r 's/\^@(.)/^@\n\1/g' f
foo^@
foo2^@
bar^@
baz^@
blah^@