【问题标题】:powershell assistance data extractionpowershell 辅助数据提取
【发布时间】:2018-06-21 05:26:36
【问题描述】:

我有一个转储到网络共享中的数据仓库文件。所以我不能做很多预先操作,所以我需要从每一行中提取日期,其中每一行日期总是以“开头”,然后是 8 个“字符”日期,格式为 19990312,即 yyyyddmm,我需要有一个powershell“方式”将日期提取为mm / dd / yyyy格式。每行的长度略有不同,但它始终是行的最后8个“字符”,下面的日期是文件的示例。任何帮助将不胜感激

"920:Bob Bikes                                   ",19870707
"2471:CAMPBEL                                       ",19971010
"2480:PARADISE cookis                                               ",19990720
"2481:CAFE                                               ",20050720
"2481:PARAE                                               ",20050720
"2482: BONES                                                   ",20050720

【问题讨论】:

  • 你到底想做什么?您对导入数据的过程有疑问吗?这就是你应该解决这个问题的地方。

标签: database powershell date extract dump


【解决方案1】:

你问题的提取部分类似于Read line-by-line file and split values

因此,让我们将您的示例文本行放入 file.txt,并根据逗号将其分开,以获得第六部分作为您的日期字段:

$yourdate = Get-Content -Delimiter "," -Path file.txt
$yourdate[6]

结果为 20050720

你问题的第二部分类似于converting date time format in powershell

所以您想将该字符串设置为日期,然后将该日期格式化为您想要的格式:

[Datetime]::ParseExact($yourdate[6], 'yyyymmdd', $us) | Get-Date -UFormat "%m/%d/%Y"

您的最终结果是: 2005 年 1 月 20 日

第 6 部分通读代码时,最初以一种更容易理解的方式解释了这一点。但是,如果部分数量不同,并且日期并不总是第六部分,@TheMadTechnician 是正确的,您可以将最后一部分引用为 $yourdate[-1]。

所以最后一行应该是这样的:

[Datetime]::ParseExact($yourdate[-1], 'yyyymmdd', $us) | Get-Date -UFormat "%m/%d/%Y"

【讨论】:

  • 甚至比假设有 6 个字段更好,因为他说它总是最后一个使用 $yourdate[-1]
  • @TheMadTechnician 很重要的一点,提出了 6 个部分的假设。我现在已经在答案中说明了这一点。 TY
  • 非常感谢大家的 greta 回答,现在我可以实施了,请保持手指交叉
猜你喜欢
  • 2016-12-10
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 2012-10-10
相关资源
最近更新 更多