私は回帰テスト/再生ツールの一部として使用している1600万行のデータファイルを持っています。データには似たような行がたくさんあります。私は、ファイルを16万行と2の4番目の要素を持つ行、3、または10である特定の条件を満たしている行のうち、大部分を除外します
ファイル形式で
|DATA|DATA|DATE|3|DATA|DATA
|DATA|DATA|DATE|3|DATA|DATA
|DATA|DATA|DATE|3|DATA|DATA
|DATA|DATA|DATE|2|DATA|DATA
|DATA|DATA|DATE|4|DATA|DATA
|DATA|DATA|DATE|2|DATA|DATA
|DATA|DATA|DATE|2|DATA|DATA
あるファイルからこれらのような行の多くを削除したいと思います作り上げます1300万行2番目、3番目、または10番目の4番目の要素の行はすべて互いに似ていますので、ファイルの90%を切り捨てたいと思います。メッセージタイプのいくつかのカウントを取得するには、私はその行は、私が最も一般的なメッセージがどのように再現性を決定するために使用したものだったが、それがない3
awk -F"|" '$4=="3"' capture.txt > out.txt
の第四の要素を持つすべての行を見つけるために、このコマンドを実行することができましたこれらのレコードを整理するのに役立つものは何もありません。私が本当に望むのは、新しいファイルを作成することです。これには、ファイルを1回通過することで可能ですか?
(All records where pipe deliminated 4th element is not 2, 3 or 10) +
(1 out of every 10 records where the 4th element is 2, 3 or 10)
2つのファイルを作成して、4番目の要素が2番目、3番目、または10番目のレコードを、4番目の要素が異なるものから分離することができたと考えました。私は1つのファイルから10行ごとに落ちて、一緒に戻ってくる可能性があります。しかし私の本当の好みは、これを1回のパスで行い、元のファイル順序を保持することです。
どのような考えですか?
サンプル入力では、$ 4ではなく$ 5が気になるようです。 –