gpt4 book ai didi

linux - 如果不以管道结尾,则合并 csv 行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:11 24 4
gpt4 key购买 nike

我有一个相当大的 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/>|

显然,行的大小比此处的样本输入大很多。

如有任何帮助,我们将不胜感激。

最佳答案

awk '{printf "%s",$0} /[|][[:space:]]*$/ {print ""}' 

打印每一行,不换行。如果最后一个非空白字符是竖线,则您有一个完整的行,因此打印一个换行符。

关于linux - 如果不以管道结尾,则合并 csv 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com