次のように、最初の行にヘッダーを含む複数列のテキストファイルがあります。
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_fill
xy_fill
xy_fill
xy_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