8つの列を持つファイルがあり、私のタスクの1つは列3の値を取得することです。行の値が 123 に等しくない場合、列 8 が印刷されるため、列 3 が 123 に等しい場合は何も印刷されません。表示内容の印刷
プログラムの一部は - >
testing=`echo $C3 | awk '!/123/ {print $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8,}'>>final.txt`
関連エラーは
awk: illegal field $(), name "C1"
input record number 1, file
source line number 1
123
私はそれを含まない行に対して次のようにawk '!/123/'
スクリプトを書くことができることがわかりました。否定一致にはgrepを使用してください(fooを含まない一致行)。。
私も試しました
testing=`echo $C3 | awk '!/123/ ; END {print $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8,}'>>final.txt`
ただし、エラーも発生します。
ベストアンサー1
awk
列形式のファイル処理用に特別に設計されています。各入力行をスペース(またはスイッチを介して提供する他の項目-F
)に自動的に分割し、列を、、...、awk
として使用できます。$1
$2
$N
したがって、3番目の列(スペースで定義されている)以外の行を印刷するには、123
次のようにします。
awk '$3!="123"' file
何かが true と評価された場合、デフォルトのジョブはawk
印刷することです。したがって、上記のコマンドはfile
3番目の列ではなくすべての行を印刷します123
。