50行を含むカンマ区切りのCSVファイルがあります。ある列は州名のためのものであり、もう一方の列は(注意)首都のためのものです。これら2つの列(2、3、4)のマーカー数を計算し、結果を配列にグループ化するループをどのように作成できますか?これを行うとき、そのような状態がいくつあるかを追跡することは可能ですか?
ベストアンサー1
ソリューションは代わりにawkを使用します。出力には注意名のみを含める必要があるという質問で理解しました。以前の答えはより便利な出力を提供し、OPはその答えを受け入れ、スクリプトは同じ形式と同じデータセットに従います。
{
x = $0
gsub(/,/, " ", $0)
a[x]=NF
}
END {
for (key in a) {
counter[a[key]] += 1
}
for (c in counter) {
print counter[c] " values with " c " tokens:"
for (key in a) {
if (c == a[key]) {
print "\t"key
}
}
}
}
32 values with 2 tokens:
Oregon,Salem
Virginia,Richmond
Montana,Helena
Florida,Tallahassee
Ohio,Columbus
Delaware,Dover
Nebraska,Lincoln
California,Sacramento
Wisconsin,Madison
Alaska,Juneau
Texas,Austin
Tennessee,Nashville
Hawaii,Honolulu
Maryland,Annapolis
Idaho,Boise
Illinois,Springfield
Wyoming,Cheyenne
Georgia,Atlanta
Connecticut,Hartford
Arizona,Phoenix
Indiana,Indianapolis
Colorado,Denver
Mississippi,Jackson
Washington,Olympia
Kentucky,Frankfort
Vermont,Montpelier
Maine,Augusta
Michigan,Lansing
Kansas,Topeka
Alabama,Montgomery
Massachusetts,Boston
Pennsylvania,Harrisburg
16 values with 3 tokens:
South Dakota,Pierre
New Hampshire,Concord
Arkansas,Little Rock
North Carolina,Raleigh
North Dakota,Bismarck
Louisiana,Baton Rouge
Oklahoma,Oklahoma City
New York,Albany
Nevada,Carson City
Iowa,Des Moines
South Carolina,Columbia
Rhode Island,Providence
New Jersey,Trenton
Minnesota,St. Paul
Missouri,Jefferson City
West Virginia,Charleston
2 values with 4 tokens:
Utah,Salt Lake City
New Mexico,Santa Fe