使用sed重新格式化日期的问题

时间:2014-04-17 14:19:25

标签: bash sed

我正在使用shell脚本将从Access导出的CSV文件重新格式化为可以更轻松地导入MySQL的格式。

我需要对文件执行许多不同的操作,而我目前仍然坚持使用其中一个操作。我以前曾经使用过sed和awk,但我对它们不太满意(我已经习惯了PCRE),而且我不知道在哪里找到我&#39这里出了问题。

我写的命令如下:

sed -e '1d' raw.csv | sed 's/£//g' | sed 's/ 00:00:00//g' | sed 's/\([0-9]{2}\)\/\([0-9]{2}\)\/\([0-9]{2}\)/20\3-\1-\2/g' > formatted.csv

现在,我在这里进行的操作如下:

  • 删除第一行
  • 删除所有英镑符号
  • 删除00:00:00
  • 的所有不需要的实例
  • 将日期从mm / dd / yy重新格式化为yyyy-mm-dd

我按顺序完成了这些工作,除了最后一个之外,它们按预期工作:

sed 's/\([0-9]{2}\)\/\([0-9]{2}\)\/\([0-9]{2}\)/20\3-\1-\2/g' > formatted.csv

谁能看到我误入歧途的地方?

1 个答案:

答案 0 :(得分:1)

你也需要逃避大括号。

sed 's/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{2\}\)/20\3-\1-\2/g' > formatted.csv