awk コマンド内で条件文とループ文の両方を使用して、特別な値を持つファイルを「エラー」などの別の値に変換し、減算を行わずに、「エラー」などの変換された新しい値を出力として表示するにはどうすればよいですか?
列の値 (最終出力で同じままである列 1 を除く) のいずれも「11111」のような特別な値と等しくない場合、次のような awk コマンドを使用します。
awk -F, '{print $1,$2,($3-$2),($4-$2),($5-$2),($6-$2),($7-$2),($8-$2),($9-$2),($10-$2),($11-$2),($12-$2),($13-$2),($14-$1)} ' all.cvs
列の値 = 特別な値の場合、「-$2」を実行する必要はなく、「エラー」のような新しい値を表示するだけです
基本的に私が欲しい:xは列#2から#14の列値を意味します
$2 (列 #2) = 11111 の場合
set $2="Error"
$3 から $14 (列 #3 から #14) の場合、列の値が <> 11111 の場合
$x=$x-$2
列の値 = 11111 の場合
$x=Error
最後に、出力には、元の #1 列の値と、列 #2 から #14 の変換/計算された新しい値を含む 14 列が表示されます。
次のようなファイル (all.cvs) があります。
14分野
各行には、「11111」(または任意の文字列値) のような値を持つフィールドが含まれる場合があります。
「,」で区切られた各列
総行数は90行
$cat all.cvs
A,11111,2,3,4,5,6,7,8,9,10,11,12,13
B,1,2,3,4,5,6,11111,8,9,10,11,12,13
C,1,2,3,4,5,6,7,8,9,11111,11,12,13
....