2013-07-27 36 views
1

我有一堆包含了一堆報價在下面的CSV格式文件的轉換文件:使用一個日期格式轉換爲另

"Date","Time","Open","High","Low","Close","Volume" 
12/30/2002,0930,24.53,24.65,24.53,24.65,762200 
12/30/2002,0931,24.65,24.68,24.52,24.6,90400 

我需要的文件(S)轉換爲新文件(S)幾乎相同的名稱(例如file.txt的到文件NTF.txt)看起來像這樣:

"Date Time","Open","High","Low","Close","Volume" 
20021230 093000;24.53;24.65;24.53;24.65;762200 
20021230 093100;24.65;24.68;24.52;24.6;90400 

因此,日期和時間列得到了合併成一個,併爲格式日期不同是不同的。此外,逗號變成了分號。我在awk中得到了這麼多

awk -F "," '{print $1,$2}' file.txt 

哪打印原始文件的日期和時間,但現在我卡住了。

回答

2

使用GNU awk

awk 'NR>1{print $3$1$2" "$4"00",$5,$6,$7,$8,$9;next}{sub(/","/," ")}1' FS='[/,]' OFS=';' file 
"Date Time","Open","High","Low","Close","Volume" 
20021230 093000;24.53;24.65;24.53;24.65;762200 
20021230 093100;24.65;24.68;24.52;24.6;90400 
+1

甜!感謝你們倆。 – user1676605

0

嘗試

awk -F, 'BEGIN{ 
    print "\"Date Time\";\"Open\";\"High\";\"Low\";\"Close\";\"Volume\"" 
} 
NR>1 { 
    printf("%04d%02d%02d %04d00;%s;%s;%s;%s\n", \ 
    substr($1,7,4), substr($1,1,2), substr($1,4,2), $2, \ 
    $3, $4, $5, $6 $7) 
}' file 

輸出

"Date Time";"Open";"High";"Low";"Close";"Volume" 
20021230 093000;24.53;24.65;24.53;24.65762200 
20021230 093100;24.65;24.68;24.52;24.690400 

我已使用的字段分隔符,你在你的樣本輸出記錄顯示和使用,在頁眉和的自由。逗號作爲分隔符是IHMO的麻煩。

IHTH

+0

@ user1676605:與編輯完成。 – shellter

0

這可能爲你工作(GNU SED):

sed -r '1{s/","/ /;b};s/^(..).(..).(....).(....)/\3\1\2 \400/;y/,/;/' file 

對於第一個行只替換第一個雙引號,頓號雙 - 按空格引用。

對於第二行和後續行應用替換和翻譯。

但是由分號使用替換所有逗號:

sed -r '1s/","/ /;1!s/^(..).(..).(....).(....)/\3\1\2 \400/;y/,/;/' file 
相關問題