ファイルから行を削除

ファイルから行を削除

4つの列と10000行のデータがあります。 2番目の列の値が前の行の3番目の列より小さい行を削除しようとしています。

chr1        10        20        3 
chr1        15        30        9 
chr1        55        60        1

ベストアンサー1

awk '$2 >= prev; {prev=$3}' file.txt

説明する

  • awk <commands> file.txt:awkを実行してくださいfile.txt
  • $2 >= prev:2番目のフィールドが$2変数の内容以上であることを確認してくださいprev。 (最初の行は設定されません。)これがtrueの場合、awkはデフォルトで行全体を印刷します。 (つまり、以下より小さい場合は行を削除します。)
  • {prev=$3}:3番目のフィールドの内容を$3変数に保存しますprev

次に、次の行に対してこれを繰り返します。 awkは、2番目のフィールドをprev前の行の3番目のフィールドを含むものと比較します。参考にするいくつかの点があります。

  • 最初の行に何をしたいのかわからないので、必要に応じて手動で含める/除外します。
  • データが実際にタブで区切られている場合は、awkに次のフラグを追加して通知します-F'\t'

おすすめ記事