CSV ファイルの 1 列だけを検索する Grep コマンド

CSV ファイルの 1 列だけを検索する Grep コマンド

私は過去1ヶ月間、Linuxと比較的基本的なすべてのコマンドを学び始めましたが、Grepコマンドにはいくつかの問題があります。私は現在、Grepコマンドを使用して、指定された2つの数字で始まる数値文字列に対してCSVファイルの1列だけを取得する方法について心配しています。特に、郵便番号が「48」で始まる行をリストしようとしています。この場合、CSVファイルの7列に含まれています。各行には異なる数値データがあるため、「プロバイダ」列でのみGrapコマンドを使用する必要があります。私はしばらくこの問題を解決しようとしてきましたが、私がやるべきことを少し過度に考えているようです。

以下は、私が使用するCSVデータの例です。

    Provider  Hospital        Total Discharges  Average Covered Charges
    49444     MI - Muskegon   53                18694.9
    49007     MI - Kalamazoo  40                20494.25
    48075     MI - Royal Oak  14                20386.28
    48124     MI - Dearborn   34                34338.47

ベストアンサー1

grepフィールドや列の概念がないため、これを達成するにはスキーマを作成する必要があります。一般的なケースでは見えないように見えますが、例に示すように、目的の数字が行の先頭にある場合は十分簡単です。

grep -Ee '^[[:space:]]*48[0-9]+[[:space:]]' file

次に、スペース、a 4、an、その他の数字、スペース文字で8始まる行を見つけます。

特定の地域では、awk結果がより良いです。デフォルトでは、すべてのスペースの行をフィールドに分割します。最初のフィールドに48異なる数字を含む行を見つけます。

awk '$1 ~ /^48[0-9]+$/' file

$1別のフィールドを使用するには、または$7別のものに変更してください。

おすすめ記事