0

次の形式の .csv ファイルがあります。 id|name|date

次の Awk コマンドを使用して、行の特定の列を変更していますが、機能します。 awk -F "|" '{$"'"$col"'"="'"$val"'";}1' filename.csv

出力を保存したいのですが、フォーマットが壊れています。

私が欲しいもの: 100|James|2015

私が得るもの:100 James 2015

2番目のものを避けて最初のものを取得するにはどうすればよいですか?

4

2 に答える 2

2

シェル変数を展開して awk スクリプトの本体の一部にしないでください。

awk -F "|" '{$"'"$col"'"="'"$val"'";}1' filename.csv

これらのシェル変数のさまざまな値を指定すると、潜在的なエラーが発生する可能性があります。代わりに、シェル変数から awk 変数を設定し、スクリプト内で awk 変数を使用します。

awk -F "|" -v col="$col" -v val="$val" '{$col=val}1' filename.csv

ただし、特定の質問に関しては、フィールドに値を割り当てると awk がレコードを再構築するため、OFS が FS と同じ値を持つ必要があります。

awk -v col="$col" -v val="$val" 'BEGIN{FS=OFS="|"} {$col=val}1' filename.csv
于 2016-03-20T13:32:07.453 に答える