我有一个包含一些(脏)数据库模式的 csv 文件。
例子:
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 One-Liner
perl -0777 -pe 's/\n(?!\d{5}\b)/ /g' yourfile
解释
\n
匹配换行符(?!\d{5}\b)
断言后面不是五位数字和单词边界- 我们插入一个空格
关于regex - sed - 替换后跟 5 位数字的新行字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25015943/