小编HB8*_*B87的帖子

根据特定的分隔符解析txt文件,然后将其转换为CSV文件

我有以下名为 OpenSimStats.txt 的文件:

TestreportsRootAgentCount=0agent(s)
TestreportsChildAgentCount=0childagent(s)
TestreportsGCReportedMemory=10MB(Global)
TestreportsTotalObjectsCount=0Object(s)
TestreportsTotalPhysicsFrameTime=0ms
TestreportsPhysicsUpdateFrameTime=0ms
TestreportsPrivateWorkingSetMemory=2144MB(Global)
TestreportsTotalThreads=0Thread(s)(Global)
TestreportsTotalFrameTime=89ms
TestreportsTotalEventFrameTime=0ms
TestreportsLandFrameTime=0ms
TestreportsLastCompletedFrameAt=25msago
TestreportsTimeDilationMonitor=1
TestreportsSimFPSMonitor=55.3333320617676
TestreportsPhysicsFPSMonitor=55.4766654968262
TestreportsAgentUpdatesPerSecondMonitor=0persecond
TestreportsActiveObjectCountMonitor=0
TestreportsActiveScriptsMonitor=0
TestreportsScriptEventsPerSecondMonitor=0persecond
TestreportsInPacketsPerSecondMonitor=0persecond
TestreportsOutPacketsPerSecondMonitor=0persecond
TestreportsUnackedBytesMonitor=0
TestreportsPendingDownloadsMonitor=0
TestreportsPendingUploadsMonitor=0
TestreportsTotalFrameTimeMonitor=18.18239402771ms
TestreportsNetFrameTimeMonitor=0ms
TestreportsPhysicsFrameTimeMonitor=0.0106373848393559ms
TestreportsSimulationFrameTimeMonitor=0.17440040409565ms
TestreportsAgentFrameTimeMonitor=0ms
TestreportsImagesFrameTimeMonitor=0ms
TestreportsSpareFrameTimeMonitor=18.1818199157715ms
TestreportsLastReportedObjectUpdates=0
TestreportsSlowFrames=1
Run Code Online (Sandbox Code Playgroud)

我想将此文件转换为 CSV 文件,如下所示:

TestreportsRootAgentCount,TestreportsChildAgentCount,...,TestreportsSlowFrames
0,0,10,0,0...,1
Run Code Online (Sandbox Code Playgroud)

我的意思是:

  1. 在这种情况下,取出分隔符前后的所有单词,分隔符为“=”
  2. 将分隔符左侧的所有单词放在一行中,以逗号分隔
  3. 在末尾插入一个新行
  4. 然后在分隔符 ( =)之后放置任何内容- 仅数字(数字后没有单位或字符)在另一行中,这些数字用逗号分隔。
  5. 然后插入一个新行

关于如何在 Linux shell 脚本中完成此操作的任何想法/建议?通过使用 sed 还是 gawk?

text-processing csv

4
推荐指数
2
解决办法
731
查看次数

标签 统计

csv ×1

text-processing ×1