我有一个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/

10-09 08:44