さて、私は私が持っているいくつかのcsvファイルのいくつかのコンマをクリアするために簡単なawkを書こうとしています。
これがサンプルデータの数行です
PRD,,,,PEWPRV100D,,,EWPRVU457D,,,,12/31/2011 10:09:14 PM,,,,,5,,,4,,
PRD,,,,PEWPRV100D,,,EWPRVU250D,,,,12/31/2011 10:09:23 PM,,,,,67,,,69,,
PRD,,,,PEWREF100D,,,EWREFU045D,,,,12/31/2011 10:09:40 PM,,,,,7,,,5,,
PRD,,,,PEWPRV100D,,,EWPRVU191D,,,,12/31/2011 10:09:40 PM,,,,,6,,,5,,
簡単な最初のステップとして、これを実行したいと思います(私が最終的にやりたいことはもっと複雑ですが、これは私が最初に行う必要があることであり、これを正しく行うことさえできません:()
PRD,PEWPRV100D,EWPRVU457D,12/31/2011 10:09:14 PM,5,4,
PRD,PEWPRV100D,EWPRVU250D,12/31/2011 10:09:23 PM,67,69,
PRD,PEWREF100D,EWREFU045D,12/31/2011 10:09:40 PM,7,5,
PRD,PEWPRV100D,EWPRVU191D,12/31/2011 10:09:40 PM,6,5,
これがawkスクリプトでの私の最初の試みです
#!/bin/awk
BEGIN{FS=",";}
{print $0,$4,$7,$11,$16,$19 }
END{print "DONE"}
を生成します
PRD,,,,PEWPRV100D,,,EWPRVU457D,,,,12/31/2011 10:09:14 PM,,,,,5,,,4,,,,,,,
PRD,,,,PEWPRV100D,,,EWPRVU250D,,,,12/31/2011 10:09:23 PM,,,,,67,,,69,,,,,,,
PRD,,,,PEWREF100D,,,EWREFU045D,,,,12/31/2011 10:09:40 PM,,,,,7,,,5,,,,,,,
PRD,,,,PEWPRV100D,,,EWPRVU191D,,,,12/31/2011 10:09:40 PM,,,,,6,,,5,,,,,,,
私が試したよりわかりやすいスクリプト:
#!/bin/awk
BEGIN{FS=",";}
{printf("$$%s$$", $0) }
END{print "DONE"}
を生成します
$$PRD,,,,PEWPRV100D,,,EWPRVU457D,,,,12/31/2011 10:09:14 PM,,,,,5,,,4,,$$
$$PRD,,,,PEWPRV100D,,,EWPRVU250D,,,,12/31/2011 10:09:23 PM,,,,,67,,,69,,$$
$$PRD,,,,PEWREF100D,,,EWREFU045D,,,,12/31/2011 10:09:40 PM,,,,,7,,,5,,$$
$$PRD,,,,PEWPRV100D,,,EWPRVU191D,,,,12/31/2011 10:09:40 PM,,,,,6,,,5,,$$
行全体が1つの列として表示されるため、FS = "、"が区切り文字をコンマに設定していないことを示しています(私は思います)。私もその線の多くの異なる形を試しましたが、どれも違いがないようです。awk実装のマニュアルページには、FSが設定すべき変数であると書かれています。私もhte-Fフラグを試しましたが、どちらも役に立ちませんでした。
私がここで見逃している明らかな何かがありますか?