私は過去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
別のものに変更してください。