regex - 使用 sed 或 awk 来修复日期格式

标签 regex bash sed awk

我正在尝试使用 bash 将包含表格的 HTML 转换为 .csv 文件脚本。

到目前为止,我已经完成了以下步骤:

  1. 转换为 Unix 格式(使用 dos2unix )
  2. 删除所有空格和制表符(使用 sed 's/[ \t]//g' )
  3. 删除所有空行(使用 sed ':a;N;$!ba;s/\n//g' )(这是必要的,因为 HTML 文件中表格的每个单元格都有一个空行……这不是我的错)
  4. 删除不必要的<td><tr>标签(带有 sed 's/<t.>//g' )
  5. 替换</td>用','(用sed 's/<\/td/,/g')
  6. 替换</tr>带有行尾 ( \n ) 字符 (with sed 's/<\/tr/\n/g' )

当然,我将所有这些都放在管道中。到目前为止,它工作得很好。我坚持执行最后一步:该表有一列包含日期,格式为 dd/mm/yyyy , 我想将它们转换为 yyyy-mm-dd .

有没有(简单的)方法(使用 sedawk )?

数据样本(在整个 sed 管道之后):

500,2,13/09/2007,30000.00,12,B-1
501,2,15/09/2007,14000.00,8,B-2

预期结果:

500,2,2007-09-13,30000.00,12,B-1
501,2,2007-09-15,14000.00,8,B-2

我需要这样做的原因是因为我需要将这些数据导入 MySQL。我可以在 Excel 中打开文件并手动更改格式,但我想跳过它。

最佳答案

sed -E 's,([0-9]{2})/([0-9]{2})/([0-9]{4}),\3-\2-\1,g'

关于regex - 使用 sed 或 awk 来修复日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18453057/

相关文章:

bash - 在 bash 中转义斜杠 (awk)

javascript - 正则表达式 从模板中提取文本

bash -/.profile与/.bashrc在ubuntu14.04上的hadoop变量

linux - 在 bash 中使用带有 cp 的变量

macos - 升级到 Mac OS 10.9.3 后 Bash 无法识别 go

linux - 如何解析 CURL 命令结果的输出?

bash - sed:仅当包含在引号中时才替换文本中的字符串

java - 我想通过Java模式表达式提取css图像路径

regex - 仅从大型字符串列表中的一部分字符串中检测和删除逗号 (R)

javascript - 理解正则表达式