我有一个csv文件和一些(脏的)DB模式。
例子:
10391,0,3,4,12,44 --ok
10391,0,3,4, --not ok
12,44 --not ok
10391,0,3,4,12,44 --ok
我想编写sed脚本,用空格替换新行字符(后面不跟5位数字)。
写了这个,但对我来说不正确:
sed 's/\n\([0-9]{1,4}\)/ \1/g'
在这个样本上运行
11111 sss
22222 aaa
3333 aaa
333 sss
22 sss
1 sss
应该产生
11111 sss
22222 aaa 3333 aaa 333 sss 22 sss 1 sss
感谢所有能帮忙的人
最佳答案
或者使用Perl一行程序
perl -0777 -pe 's/\n(?!\d{5}\b)/ /g' yourfile
解释
\n
匹配换行符(?!\d{5}\b)
断言后面的不是五位数字和一个词的边界我们插入一个空格
关于regex - sed-替换新的换行符,后跟5位数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25015943/