我有一个相当大的 csv 文件,其中每一行都应该以管道 (|) 结尾,如果它没有将下一行合并到其中,直到再次找到管道。这需要使用 shell 脚本来完成。
我得到了一个答案
awk '!/|$/{l=l""$0|next|}{print l""$0|l=""}' file
但这给了我错误,因为每行的大小对我来说都很大。我发现我应该使用 perl 来做到这一点,并尝试了以下方法,但它确实产生了预期的结果。
perl -pe 's/^\n(|\n)/ /gs' input.csv > output.csv
我的数据看起来像
A|1|abc|<xml/>|
|2|def|<xml
>hello world</xml>|
|3|ghi|<xml/>|
并且期望的输出应该是
A|1|abc|<xml/>|
|2|def|<xml>hello world</xml>|
|3|ghi|<xml/>|
显然,行大小比这里的样本输入要大。
任何帮助将不胜感激。