700万を超える行(実際には20以上の列)を持つデータセットがあり、新しい列(データセットの例には5つの列があります)を作成しようとしているため、数値6になります。私のデータセットにはタイトルがあります。
条件は次のとおりです。列 1 の値が列 3 の値より大きい場合、新しい列は列 1 の値を持ち、そうでない場合、その値は「1 から列 1 の値を引いた値」でなければなりません。
私はこれを試しましたが、うまくいきません。
awk '{ if ($1 > $3) $6 == $1}; else $6 == 1-$1}' test.txt > test2.txt
データセット(例):
col1 col2 col3 col4 col5
1 3 4 string string
4 2 1 string string
行1の場合col6は1-1 =でなければなら0
ず、行2の場合col6はでなければなりません4
。
ベストアンサー1
==
両方のオペランドの値が同じであることを確認し、右の=
オペランドの値を左のオペランドに代入します。次の行が機能します。
awk '{ if($1>$3) $6=$1; else $6=1-$1; print $0; } ' test01 > test02
または:
awk '$1>$3{ $6=$1; print $0; } $1<$3{ $6=1-$1; print $0; }' test01 > test02
awk
これがうまくいくので:
awk 'condition1{main1} condition2{main2} ... conditionN{mainN}' file.txt
条件が与えられない場合、そのmainは常に実行されます。