Используйте 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