-2

私はこのコードにつまずいています。セパレーター「;」でファイルを解析しようとしています 他の新しいファイルに保存します。しかし今では、元のコンテンツを分離せずに新しいファイルに保存しています。

cat $file | awk 'BEGIN {FS=";"}{ print  > "final.txt"}END{ print "parsed now..."}'

しかし、それは私に元のファイルの内容を与えています。printawkで処理されたファイルのすべての列を出力すると思いました。

誰かが私を助けてくれますか?

どうもありがとう

4

2 に答える 2

0

私があなたを正しく理解していれば、問題は「;」の場所に出力が得られないことです " " (標準の OFS) に置き換える必要がありますか?
それが問題なら、なぜしないのですか

sed 's/;/ /g' $file

とにかく-awkのAFAIKは、入力行がどこにあるかprintを意味します。その行のフィールドが明示的に変更されていない場合、まったく更新されません。私の回避策は通常、更新を強制するために疑似更新を行うことです。たぶん「よりクリーンな」方法があるかもしれません...print $0$0$0$1=$1$0

cat $file | awk 'BEGIN {FS=";"}{$1=$1;print  > "final.txt"}END{ print "parsed now..."}'

編集:

awk -F";" '{print $4}' $file >final.txt
于 2012-08-02T11:48:11.280 に答える
0

Print はデフォルトで完全な行である $0 を出力します。あなたが得ているものは何でも正しいです。

正確に何が必要か分かりますか?セパレーターを外す必要はありますか?

4列目は以下で印刷できます:

awk 'BEGIN {FS=";"}{ print $4 > "final.txt"}END{ print "parsed now..."}' $file
于 2012-08-02T11:52:43.857 に答える