У меня есть текстовый файл, как так
foo bar baz
1 a alpha
2 b beta
3 c gamma
Я могу использовать awk для печати определенных столбцов, таких как 1 и 3, {print $1, $3}
но я хочу указать столбцы для печати, указав вместо этого заголовок столбца, что-то вроде {print $foo, $baz}
. Это полезно, поэтому мне не нужно открывать файл и подсчитывать столбцы вручную, чтобы увидеть, какой столбец является каким, и мне не нужно обновлять скрипт, если номер столбца или порядок изменяется. Могу ли я сделать это с помощью awk (или другого инструмента оболочки)?
источник
print i
andprint $i
иprint
f [$ i] `в цикле и т. Д., Чтобы отслеживать, что происходит, если это поможет.Вы просите
awk
, но вы можете также использовать более специализированный инструмент для этого:csvtool
.или
источник
Предполагая, что файл является файлом TSV («значения, разделенные табуляцией»), используя
csvkit
:Выходные данные будут правильно отформатированы в формате CSV, но их можно легко изменить на TSV:
-c
Вариантcsvcut
может также принимать номера и диапазоны, а также может быть использован для переставить столбцы входных данных (особенность я часто не хватаю в стандартныхcut
утилитах).источник