次の形式の .csv ファイルがあります。
id|name|date
次の Awk コマンドを使用して、行の特定の列を変更していますが、機能します。
awk -F "|" '{$"'"$col"'"="'"$val"'";}1' filename.csv
出力を保存したいのですが、フォーマットが壊れています。
私が欲しいもの: 100|James|2015
私が得るもの:100 James 2015
2番目のものを避けて最初のものを取得するにはどうすればよいですか?
次の形式の .csv ファイルがあります。
id|name|date
次の Awk コマンドを使用して、行の特定の列を変更していますが、機能します。
awk -F "|" '{$"'"$col"'"="'"$val"'";}1' filename.csv
出力を保存したいのですが、フォーマットが壊れています。
私が欲しいもの: 100|James|2015
私が得るもの:100 James 2015
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