ファイルの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