部分一致ではなく、その単語と正確に一致する単語の列見出しを検索するにはどうすればよいですか? [コピー]

部分一致ではなく、その単語と正確に一致する単語の列見出しを検索するにはどうすればよいですか? [コピー]

次のように、最初の行にヘッダーを含む複数列のテキストファイルがあります。

Name  xy_fill zxy_fill tz_fill 
Fox    0      5        55
Snake  1      6        14
wolf   8      1        2

ヘッダーは名前付き配列に保存されますhdr。ここでは、この複数列のテキストファイルからこの配列の各要素を検索したいとxy_fill tz_fill 思います。hdr私はこのawk方法を使用しています

for ii in ${hdr[@]}
do

  gawk -vcol="$ii" -F  $'\t' '                                 
    $0 ~ col{
   for(s=1;s<=NF;s++){                        
          heading=$s                                  
         colhdr[s]=heading
         if(index(heading, col))wanted[s]=1
       }
    }
   '

done

ただし、検索するとxy_fill列が表示されます。どのように熱を読むことができますか?たとえば、検索すると列番号1を返す必要がありますが、私のスクリプトは1と2を返しますが、これは間違っています。zxy_fillxy_fillxy_fillxy_fill

ベストアンサー1

csvcut以下で使用csvkit:

# if file is tab-delimited:
csvcut -t -c xy_fill,tz_fill file

# if file is space-delimited
csvcut -d' ' -S -c xy_fill,tz_fill file

配列を入力として使用するには、次のものが必要です。コンマで区切って変換します。値:

hdr=(xy_fill tz_fill)
hdr_csv=$(IFS=,;echo "${hdr[*]}")
csvcut -t -c "$hdr_csv" file # tab-delimited
# or
csvcut -d' ' -S -c "$hdr_csv" file # space-delimited

| csvformat -T出力をタブに分割するには、最後にこれを追加します。

出力:

xy_fill tz_fill
0   55
1   14
8   2

おすすめ記事