アルファベット範囲に基づいて区切られたファイルから行を取得します。

アルファベット範囲に基づいて区切られたファイルから行を取得します。

私が解決している問題は、「|」で区切られたフィールドを含むファイルがあり、ファイルがこれらのフィールドの1つに基づいてソートされることです。私が思いついたのは、特定の分野の範囲に基づいて線をつかむ方法です。

一例:

入力例は次のようになり、2番目のフィールドに基づいてソートされます。だから金田順にリストされています。

1234|abcd|3fgbe32
1234|abce|5fasdf3
5678|abcf|t438fjd
9876|abcg|57fshde

私が取得したい範囲は、「abcd - abcfの範囲内のすべてのレコードを別のファイルに記録したいと思います。残りのレコードは次のようになります。

1234|abcd|3fgbe32
1234|abce|5fasdf33
5678|abcf|t438fjd

初めて始めたとき、私はこの問題に間違った方法でアプローチしていると思いました。各行を繰り返しながら、正規表現と比較して行を調べて、その行が必要かどうかを確認します。しかし、awkとgrepを使用するより良い方法はありますか?

ベストアンサー1

範囲内に属するすべてのレコードABCD-ABCF

シンプルアッ解決策:

awk -F'|' '$2~/^abc[d-f]$/' file

出力:

1234|abcd|3fgbe32
1234|abce|5fasdf3
5678|abcf|t438fjd

おすすめ記事