John Goldenrod:(916) 348-4278:250:100:175
Chet Main:(510) 548-5258:50:95:135
Tom Savage:(408) 926-3456:250:168:200
Elizabeth Stachelin:(916) 440-1763:175:75:300
出力には、4文字の名前(john、chet)のみを含む行を含める必要があります。
awk '$1 ~ /[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]" "/ {print}' file
これは私には適していないようです。 awk関数を使用せずにこれを実行できますか?
ベストアンサー1
awkのフィールドはデフォルトでは" "で区切ります。これは
$1
空白がないことを意味するので、正しい正規表現は次$1
のようになります。
awk '$1 ~ /^[a-zA-Z0-9]{4}$/ {print}' file
元の方法を維持するには、$0
次のように使用することもできます。
awk '$0 ~ /^[a-zA-Z0-9]{4}\s/ {print}' file
\w
簡単にするために、単語文字を明示的に定義する代わりに、次のように使用することもできます。
awk '$0 ~ /^\w{4}\s/ {print}' file
スペースだけを一致させ、他のものを一致させたくない場合は、「」(引用符を除く)にTAB
置き換えてください。\s
元のアプローチのもう一つの問題は、アンカーポイントがないことです。指定しなかったため、パターンはどこにも現れません。つまり、パターンが と^
一致します。$
Elizabeth Stachelin
beth