awkを使用して$ 0を印刷するときにフィールド区切り文字を保持する方法[重複]

awkを使用して$ 0を印刷するときにフィールド区切り文字を保持する方法[重複]

ファイルの1列を変更したら、結果を印刷してみます。

awk -F"|" '{ if(NR!=1){$5 = $5+0.1} print $0}' myfile

私が望むように動作しますが、印刷時に最初の行だけがフィールド区切り文字を保持します。 (修正しません)。

print $1"|"$2"|"$3"|"$4"|"$5"|"...それでは、$ 0を使わずに使用できるソリューションはありますか? (例:列数がわからない場合)

私は問題を簡単に解決できると信じていますが、sed今は学びようとしています。awk

ベストアンサー1

@Sukminderはすでに簡単な答えを提供しています。サンプルコード(例:コードレビュー)のいくつかのスタイルポイントと便利な構文があります。これはコメントで始まりましたが、ますます長くなりました。

OFS前述のように、出力フィールドの区切り記号。

$0-のデフォルトパラメータであるため、print明示的に指定する必要はありません。別のスタイルポイント:awk組み込みの条件付きブロックなど、いわゆる「パターン」があります。したがって、以下を使用することもできます。

awk -F'|' 'BEGIN {OFS = FS} NR != 1 {$5 += 0.1} {print}' myfile

おすすめ記事