質問: テキストデータ内にカラム名とデータが入っております。 そのテキストデータの指定したカラム名が入っている列のデータをコマンド抽出したいのですが、方法はありますでしょうか? なお、awkのバージョンは4.0.2です。 【イメージ】 cat テキストデータ | awk '{print $4, $6}' ↑コレを$4や$6指定でなく、'Target'と'Data1'で指定するように変更(?) 【例】 ・テキストデータ Col1 Col2 Col3 Target Col4 Data1 Col5 ... Data1 Data2 Data3 Data4 Data5 Data6 Data7 ... Data11 Data22 Data33 Data44 Data55 Data66 Data77 ... ・抽出内容 Target Data1 Data4 Data6 Data44 Data66
回答: こんな感じですかね。 ``` #/usr/bin/awk -f # awk -f this.awk cols='Target Data1' input.txt NR==1{ target_num = split(cols, targetcolnames, " ") k=1 for(i=0; i<=NF; i++){ for(j=1; j<=target_num; j++){ if($i==targetcolnames[j]){ targetcols[k] = i k++ } } } } { out = "" for(i=1; i<=target_num; i++){ out = out " " $targetcols[i] } sub(/^ /, "", out) print out } ```