Mam taki plik tekstowy
foo bar baz
1 a alpha
2 b beta
3 c gamma
Mogę użyć awk do wydrukowania niektórych kolumn, takich jak 1 i 3, {print $1, $3}
ale chcę określić kolumny do wydrukowania, podając zamiast tego nagłówek kolumny, coś w rodzaju {print $foo, $baz}
. Jest to przydatne, więc nie muszę otwierać pliku i ręcznie zliczać kolumn, aby zobaczyć, która kolumna jest, i nie muszę aktualizować skryptu, jeśli zmieni się numer kolumny lub kolejność. Czy mogę to zrobić za pomocą awk (lub innego narzędzia powłoki)?
źródło
print i
iprint $i
iprint
f [$ i] `oświadczenia w pętli, itd., Aby co dzieje czy to pomaga śladowe.Prosić
awk
, ale można też użyć bardziej wyspecjalizowanym narzędziem do tego:csvtool
.lub
źródło
Zakładając, że plik jest plikiem TSV („wartości rozdzielane tabulatorami”), przy użyciu
csvkit
:Dane wyjściowe zostaną poprawnie sformatowane CSV, ale można je łatwo zmienić z powrotem na TSV:
-c
Opcjacsvcut
może mieć również numery i zakresy, a także może być używany do przestawiać kolumny danych wejściowych (funkcja często brakuje w standardowymcut
Utility).źródło