Mam funkcję, która generuje wiele wierszy informacji, które chcę sformatować w kolumnach. Problem polega na tym, że szerokość jakiejś konkretnej "komórki" (jeśli mogę używać tego terminu) danych jest zmienna, więc podłączenie jej do czegoś takiego jak awk nie daje mi tego, czego chcę.W jaki sposób sformatować dane wyjściowe polecenia bash w czystych kolumnach
Funkcja „Keys” (nie, że jest to ważne) i próbuję coś takiego:
$ keys | awk '{ print $1"\t\t" $2 }'
ale wyjście (fragment o tym, że jest), wygląda następująco:
"option-y" yank-pop
"option-z" execute-last-named-cmd
"option-|" vi-goto-column
"option-~" _bash_complete-word
"option-control-?" backward-kill-word
"control-_" undo
"control-?" backward-delete-char
Jak zmusić rzeczy do pozostania w schludnych kolumnach? Czy jest to możliwe w awk, czy też muszę użyć czegoś innego?
miło i szybko i użytecznie, ale wersja awk pozwala mi łatwiej ją podkręcać rozwiązać inny problem: podział na coś innego niż spacje. Próbowałem z tym: 'IFS =" ""; klucze | kolumna -t', ale kolumna nie wydaje się respektować wartości $ IFS. – iconoclast
Oczywiście, że nie. Podobnie jak na stronie man, użyj '-s'. –
@Bandon: 'IFS' jest wewnętrznym separatorem pól dla' powłoki', nie dla programów uruchamianych przez powłokę, chociaż * mogą * wykorzystywać te same wartości. –