Text-Processing

更改 CSV 文件中的日期格式

  • July 13, 2019

我有一個程序以格式輸出數據

date, time,field1,field2,field3,fieldn
12/20/14,08:01:53,318.622,0.93712,21.6867,1.1089

該文件有很多列都需要保持不變

日期格式是美國,但我需要非美國即

date, time,field1,field2,field3,fieldn,....
20/12/14,08:01:53,318.622,0.93712,21.6867,1.1089,....

實現這一目標的最簡單方法是什麼?我做了一個搜尋,有一些例子,但不是我的情況。還查看了 date 命令,以及 awk 和 sed,但我不知道如何發出命令。例如,這個使用 awk 的答案看起來不錯,但對我的文件沒有做任何事情。

我正在使用 Mac,因此需要適用於 OSX 提供的版本的命令。

sed -E 's,^([0-9]+)/([0-9]+),\2/\1,'

解釋

  • sed -E: 將 sed 與擴展的正則表達式一起使用,這樣我們就不必轉義()等。
  • s/foo/bar/``sed: 這是搜尋foo和替換它的一般語法bar。在這裡,我使用,了代替/,因為表達式中有/s,這將簡化它(再次避免混淆轉義。因此,s,foo,bar,.
  • ^([0-9]+)/([0-9]+): 搜尋行^首,後跟一位或多位數字[0-9]+,並將其放入擷取組()。這是一個月。這之後是/另一個擷取組(即天)中的一個或多個數字。
  • \2/\1:將其替換為第二個擷取組(日),然後是/,然後是第一個擷取組(月)。

用法

您可以將文件通過管道傳輸到此命令中,即 ie <your_command_here>| sed…,或者您可以直接在文件上執行它,即sed… file.txt. 這將直接輸出到命令行。要寫入新文件,請附加> output.txt到命令。

引用自:https://unix.stackexchange.com/questions/529936