次のように、多くの列を含むtxtファイルがあり、2番目の列位置と3番目の列位置の間に含まれる行を取得する必要があります。
1 10385389 10385390 . 21
1 10385390 10385391 . 22
1 10385391 10385392 . 22
1 10385392 10385393 . 21
1 10385393 10385394 . 22
1 10385394 10385395 . 25
1 10385395 10385396 . 25
1 10385396 10385397 . 25
1 10385397 10385398 . 25
1 10385398 10385399 . 25
たとえば、10385391から10385397までの出力を選択したとします。
1 10385391 10385392 . 22
1 10385392 10385393 . 21
1 10385393 10385394 . 22
1 10385394 10385395 . 25
1 10385395 10385396 . 25
1 10385396 10385397 . 25
ボーナス:同様に重要なのは、開始位置が見つからない場合は代わりに終了位置を見つけることです。提供された例では関連シリーズがあるため、これは発生しませんが、次のようなファイルを受け取った場合
1 10385389 10385390 . 21
1 10385391 10385392 . 22
1 10385392 10385393 . 21
1 10385393 10385394 . 22
私が避けたいエラーは、ユーザーが10385390と入力しましたが、2番目の列に見つからないことです。
ベストアンサー1
開始および停止条件はAWKで直接処理できます。
awk '$2 == "10385391",$3 == "10385397"'
これにより、2番目のフィールド「10385391」のある行で始まり、3番目のフィールドが「10385397」のある行で終わるすべての行が出力されます。
より柔軟な条件を処理するために、1 番目と 2 番目のフィールドの値が 10385391 から 10385397 の間の行を検討できます。
awk '$2 >= 10385391 && $3 <= 10385397'
入力に一致する行の複数のセットが含まれている場合は、すべて出力されます。