【问题标题】:Combine two csv rows into one row将两个csv行合并为一行
【发布时间】:2015-11-08 14:32:16
【问题描述】:

我正在尝试将 csv 文件的两行合并为一行。

csv 文件:

"Operations=5009.0,AverageLatency(us)=714.4248352964663,MinLatency(us)=300.0,MaxLatency(us)=173567.0,95thPercentileLatency(us)=1216.0,99thPercentileLatency(us)=2645.0,Return=5009"
"Operations=4991.0,AverageLatency(us)=831.4189541174113,MinLatency(us)=370.0,MaxLatency(us)=25999.0,95thPercentileLatency(us)=1495.0,99thPercentileLatency(us)=2857.0,Return=4991"

预期输出:

"Operations=5009.0,AverageLatency(us)=714.4248352964663,MinLatency(us)=300.0,MaxLatency(us)=173567.0,95thPercentileLatency(us)=1216.0,99thPercentileLatency(us)=2645.0,Return=5009","Operations=4991.0,AverageLatency(us)=831.4189541174113,MinLatency(us)=370.0,MaxLatency(us)=25999.0,95thPercentileLatency(us)=1495.0,99thPercentileLatency(us)=2857.0,Return=4991"

我试过了:

awk 'NR%2{printf $0" ";next;}1' file.csv

但它不会打印整个第一行。

"Operations=5009.0,AverageLatency(us)=714.4248352964663,MinLatency(us)=300.0,MaxLatency(us)=173567.0,95thPercentileLatency(us)=1216.0,99thPercenti "Operations=4991.0,AverageLatency(us)=831.4189541174113,MinLatency(us)=370.0,MaxLatency(us)=25999.0,95thPercentileLatency(us)=1495.0,99thPercentileLatency(us)=2857.0,Return=4991"

有什么想法吗?

谢谢

【问题讨论】:

  • 你使用什么编程语言?
  • @Whitecat 我正在使用 python。

标签: python csv awk


【解决方案1】:

对于您描述的示例,以下代码应该可以完成这项工作:

awk 'BEGIN{OFS=","}{if(NR%2==1){val=$0;}else{print val,$0}}' inputFile

将奇数行的内容存储在一个变量中,并将该变量的内容与当前行一起打印在偶数行中。

输出:

"Operations=5009.0,AverageLatency(us)=714.4248352964663,MinLatency(us)=300.0,MaxLatency(us)=173567.0,95thPercentileLatency(us)=1216.0,99thPercentileLatency(us)=2645.0,Return=5009","Operations=4991.0,AverageLatency(us)=831.4189541174113,MinLatency(us)=370.0,MaxLatency(us)=25999.0,95thPercentileLatency(us)=1495.0,99thPercentileLatency(us)=2857.0,Return=4991"

如果你的输入文件中只有两行,有一个更复杂的方法来解决这个问题(我首先想到的):

awk 'BEGIN{RS=""; FS="\n"; OFS=",";}{print $1,$2;}' inputFile

此代码将换行符(“\n”)解释为字段分隔符。也就是说,inputFile 中的两行显示为同一数据集的两列。 (我们需要 RS="" 覆盖其默认值。)
在输出中,此换行符必须替换为逗号 (OFS=",")。

【讨论】:

  • 谢谢!但是第一行仍然没有完成。
  • @Araz:当我在这里运行命令时,我得到了你预期的输出。你缺少什么?顺便说一句,您的命令也会产生预期的输出(除了缺少的“,”作为字段分隔符)。您的显示器可能有问题您是否尝试将输出写入文件?我已将我的输出添加到答案中......
  • 我的输入文件有问题。刚解决。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多