• ベストアンサー

awkで列指定をして削除

awkかsedを利用して以下のファイルを処理したいです。 1 2 3 4 5 2 1 3 4 5 1 2 3 4 5 3 1 3 4 5 一列目の値が1の行のみ削除したいです。 2 1 3 4 5 3 1 3 4 5 こんな感じです。 実際に処理するファイルは膨大な行数ががあるためprintでは難しいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

No1さんの回答だと、「行頭の文字が1の行を除外」なので、質問とはちょっと違うような。 awk '$1!="1" ' 元ファイル > 修正後ファイル

macdoc
質問者

お礼

ありがとうございます。 awkで「!」の使い方を初めて知りました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

[ANo.2] さんが awk だから sed で! sed '/^[ \t]*1[ \t]/d /^[ \t]*1$/d' 元ファイル > 修正後ファイル sed の正規表現って表現力乏しい。。。

macdoc
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
回答No.1

該当行を削除した状態を別ファイルに出力するなら以下のコマンドでできます。 # awk '$1 !~/^1/{print}' input_file > output_file コマンドを毎回打つのがめんどい場合はawkの構文をファイル(hoge.awk)に書いて以下で実行 # awk -f hoge.awk input_file > output_file これで答えになってるでしょうか? 因みに以下のようにgrepコマンドでも同じことができますが入力ファイルの行数が数万行以上とかの場合はawkの方が早いと思います。 # grep -v ^1 input_file

すると、全ての回答が全文表示されます。

関連するQ&A