技术问询:如何将单行带时间戳的多条目转换为列格式
嘿,我来帮你搞定这个文本格式转换的需求!这里有两个实用的方法,不管你习惯用命令行工具还是脚本语言都能轻松解决:
方法1:用AWK快速处理(终端首选)
AWK天生擅长处理这种按字段拆分的文本任务,你可以直接用下面的命令完成转换:
先把你的输入内容保存成input.txt文件,然后执行这个一行命令:
awk 'BEGIN{FS=", "}{ts=$1;for(i=2;i<=NF;i++){split($i,p," ");print ts", "p[1]}}' input.txt > output.txt
简单解释下逻辑:
FS=", ":把字段分隔符设为逗号加空格,这样每行内容会被拆成独立的字段- 把第一字段(也就是时间戳加DEFAULT的部分)存为
ts变量 - 从第二个字段开始循环,每个字段是
Proc_m0_sx DEFAULT,用split按空格拆分后取第一个部分(就是你要的Proc开头的字符串) - 最后把时间戳部分和Proc字符串拼接起来打印,结果直接输出到
output.txt里
方法2:用Python脚本(灵活自定义)
如果更熟悉Python,写个小脚本也很方便,还能随时调整逻辑:
# 读取输入文件,写入转换后的内容到输出文件 with open("input.txt", "r") as infile, open("output.txt", "w") as outfile: for line in infile: # 去掉每行首尾的空白字符,跳过空行 cleaned_line = line.strip() if not cleaned_line: continue # 按逗号加空格拆分每行内容 line_parts = cleaned_line.split(", ") # 提取时间戳部分 timestamp_section = line_parts[0] # 遍历每个Proc项,拆分后写入新行 for proc_entry in line_parts[1:]: proc_name = proc_entry.split()[0] outfile.write(f"{timestamp_section}, {proc_name}\n")
运行这个脚本后,output.txt里就会生成你想要的目标格式啦!
测试验证
用你给出的输入内容测试,两种方法都会输出完全符合要求的结果:
20180127200000 DEFAULT, Proc_m0_s1 20180127200000 DEFAULT, Proc_m0_s2 20180127200000 DEFAULT, Proc_m0_s3 20180127200001 DEFAULT, Proc_m0_s1 20180127200001 DEFAULT, Proc_m0_s2 20180127200001 DEFAULT, Proc_m0_s3
内容的提问来源于stack exchange,提问作者alfigue
相关产品推荐
相关产品推荐

