8番目のフィールド(列)の値が2以下のすべての行を削除する必要があります。
私のデータは次のようになります:
12-31 Airport 189 379 41 49.70946503 -124.91377258 2 2880 30.8
01-01 AlberniElementary 165 331 16 49.26100922 -124.80662537 4 5760 26.1
01-09 BamfieldMarine 161 323 23 48.83490372 -125.13572693 2 2875 27.4
01-10 BamfieldMarine 161 323 23 48.83490372 -125.13572693 3 3068 38.6
Awkを使用すると、必要な値を取り除いて別のファイルに出力できること、そしてsedが現在のファイルを編集することを理解しています。どちらの場合も、元のファイルを保持する必要があります。
注:解決策を詳しく説明してください。コマンドを書くだけでは十分ではありません。提案に注釈を付けてください。
補足:データにはヘッダー行があるため、最も可能性の高い解決策は、
awk 'FNR> 1'
私は考えます?
もうすぐだ。
awk '(NR>1) && ($8 > 2 ) ' foo > bar
どこ
NR
はレコード数(つまり、行数)です$8
は8つのフィールドです&&
は論理的であり、foo
は元のファイルで、変更されていませんbar
結果のファイルヘッダーはそれを保持するためにfooからbarにストライプされていることに注意してください
awk '(NR==1) || ($8 > 2 ) ' foo > bar
どこ
||
は論理的または範囲を指定するには
( ($8 >= -4) && ( $8 <= 4 ) )
-4から4までの8番目のフィールド(NR == 1 ) || ( ($8 >= -4) && ( $8 <= 4 ) )
同じ、ヘッダーを含む