如何最好地编辑.txt文件中的文本以与mysql一起使用

时间:2015-07-06 21:24:20

标签: python mysql linux shell

我正在运行一个从少数寄存器收集信息的shell脚本。它将数据转储到文本文件中,如下所示:(我已将信息以粗体显示,我想上传)

log.txt:

  

ID:3498x39
时间: 12:24:08
日期: 06/07/2015
  4115 134 (0x86)
4116 323 (0x143)
4117 20 (0x14)   
4118 3 (0x3)
4119 26 (0x1A)
4120 1284   (0x504)

然后在10分钟后再次使用下一批数据重复。

我现在要做的是在收集之后用这些信息更新MySQL数据库。是否需要python程序来格式化数据,我认为如下:

  

2015/06/07 12:24:08 134 323 20 3 26 1284

或者有更简单的方法吗?

2 个答案:

答案 0 :(得分:0)

Python是一种相当简单的修改方法。但是,如果您已经使用该格式输出shell脚本,为什么不修改shell脚本以将其输出为log.txt中的新格式或其他替代文件?当然,这并不能修复已经存在的记录,但是它可以防止将来的log.txts被转换。

答案 1 :(得分:0)

这假定格式符合您的指定。因此,它假设任何错误输出都发送到stderr。

#!/usr/bin/env bash

output=""
read line # throw away the ID line
for ((i = 0; i != 9; ++i))
do
  read line
   formatted="$(echo "$line" | cut -d' ' -f2)"
  case $i in
    1) formatted="$(echo "$formatted" | sed 's#\(\d+/\d+\)/\(\d+\)#\2/\1#')"
       ;;
    *) ;;
  esac
  output="$output $formatted"
done
echo "$output"

使用您在问题中的内容作为输入运行上述内容。

bash-3.2$ ./test < input.txt
 12:24:08 06/07/2015 134 323 20 3 26 1284 

鉴于以上只有14行代码,本来可以短得多,并且写了大约2分钟,我会假设我一定不会回答你问的问题。因为,如果这是你问题的答案,你提出了一个不好的问题。