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

次のようにするには、ファイルをほぼ同じ名前の新しいファイルに変換する必要があります (たとえば、file.txt から file-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

そのため、日付と時刻の列が 1 つにマージされ、日付の形式が異なります。また、コンマはセミコロンになりました。私はawkでここまで来ました

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

元のファイルの日付と時刻を出力しますが、今は立ち往生しています。

4

3 に答える 3

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
于 2013-07-27T22:48:58.273 に答える
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

于 2013-07-27T22:47:18.507 に答える
0

これはうまくいくかもしれません(GNU sed):

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

最初の行のみ、最初の二重引用符、コンマ二重引用符をスペースに置き換えます。

2 行目以降は、置換と翻訳を適用します。

ただし、すべてのコンマをセミコロンに置き換えるには、次を使用します。

sed -r '1s/","/ /;1!s/^(..).(..).(....).(....)/\3\1\2 \400/;y/,/;/' file
于 2013-07-28T06:42:37.100 に答える